View Full Version : 为什么我的代理在服务器上运行了,但却没有执行@MAILSEND?
如题,但奇怪的是在客户端手动运行这个代理就没有问题?
麻烦各位高手指点迷津,先谢了!
代理代码如下:
REM {当未标记已完成或者未标记已撤销,并且邮寄日期=今日 时执行发送提醒操作};
@If((@Date(@Now) - PostedDate )/86400 = 0 & (DueDate - PostedDate )/86400 > 0 & (Main_Status != "2" | Main_Status != "4");
@Do(@MailSend(people;"";"";"任务提醒 (" + Subject + ")" ;"任务定时提醒,主题:" + Subject;"";);
FIELD PostedDate := @Adjust(PostedDate;0;0;1;0;0;0));
"");
SELECT @All
[[i] 本帖最后由 imzh 于 2006-8-2 09:02 AM 编辑 ]
补充说明一下:
1、此代理每天定时运行于服务器一次
2、从文档中的值来看,代理的确运行过了,因为PostedDate域的值已被调整过了,但好像就是@mailsend这一句没起作用
1.试一下做一按键,调试(@MailSend(people;"";"";"任务提醒 (" + Subject + ")" ;"任务定时提醒,主题:" + Subject;"";[IncludeDoclink]);是否可以成功
2检查一下你是否有在服务器运行代理的权限,这很重要哦,我就有吃过这个亏
原帖由 月影无限 于 2006-8-2 07:17 PM 发表
1.试一下做一按键,调试(@MailSend(people;"";"";"任务提醒 (" + Subject + ")" ;"任务定时提醒,主题:" + Subject;"";);是否可以成功
2检查一下 ...
谢谢月影作答:handshake
1.试一下做一按键,调试(@MailSend(people;"";"";"任务提醒 (" + Subject + ")" ;"任务定时提醒,主题:" + Subject;"";[IncludeDoclink]);是否可以成功
我在本地客户端运行代理时,这句是执行了的(成功地收到了邮件)
2检查一下你是否有在服务器运行代理的权限,这很重要哦,我就有吃过这个亏
这方面我不太懂,月影再帮我看看是在这里设置么,如果是,我是设置过的了呀,如图:
shenboo
03-08-06, 10:52 PM
一 定 是权限问题,
连代理的权限属性我都看过了,还是不行:L
可我手动运行这个代理或单独运行@MAILSEND那一句却没问题:-(
原帖由 暴风雪 于 2006-8-4 11:23 AM 发表
agent签名的ID是可以发mail的吗?
是的,是管理员的,完全权限
问题解决了!:lol
我请教了学习时的老师,老师说他也不能确认@MailSend公式是否可以在Agent中运行,他如果通过后台Agent代码发送邮件,一般使用LotusScript中NotesDocument.Send()方法
我将代理用LotusScript改写后,果然没有任何问题了。看来@MailSend在Agent中运行确实有问题。
提请大家以此为戒! 呵呵 :lol
呵呵,应该加个已解的标记~~~~呵呵,我在代理里面有用过公式,帮助里面也有说明,有些是不能用的,你的这个确实没用过~~~
呵呵,几天没有来,看来问题已解决了,真开心。
所以我们对于编程中碰到,还是要一步一步的拆开分析。
我前几天也碰到了不能说同样但是类似的问题,折腾了我整整一天.
你试试给这个数据库的试图,加一个默认试图,代理mailsend那句公式才能执行
你可以试试:)
原帖由 shuor 于 2006-8-10 09:05 AM 发表
我前几天也碰到了不能说同样但是类似的问题,折腾了我整整一天.
你试试给这个数据库的试图,加一个默认试图,代理mailsend那句公式才能执行
你可以试试:)
谢谢,我已注意到这个问题了,但最终没有再用@mailsend再试
apexzlm
15-08-06, 08:51 AM
能贴出完整的Lotusscript 的语句吗?我好学习一下.
原帖由 apexzlm 于 2006-8-15 08:51 AM 发表
能贴出完整的Lotusscript 的语句吗?我好学习一下.
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set dc = db.AllDocuments
For j =1 To dc.count
Set doc = dc.getnthdocument(j)
If doc.Alarms(0) = "1" Then
a1 = Today() - doc.PostedDate(0)
Else
a1 = -1
End If
If a1 >= 0 And (doc.Form(0) = "ITTask" And doc.Main_Status(0) <> "2") And (doc.Form(0) = "ITTask" And doc.Main_Status(0) <> "4") Then
Call SendMailMemo(doc.people,"","","定时提醒:您还有任务未完成或未标记已完成! ( 主题:" + doc.subject(0) +" )" ,_
"主题:" + doc.subject(0) + ",请点击图标查看详细信息",doc)
End If
Next
End Sub
其中SendMailMemo是一个自定义函数:
'在Script中做到@mailsend
Function SendMailMemo(sendTo As Variant, _
cc As Variant, _
bcc As Variant, _
subject As String, _
body As String, _
linkTo As NotesDocument) As Integer
On Error Goto ErrorHandler
Dim mailDb As New NotesDatabase("", "")
Dim mailDoc As NotesDocument
Dim rtItem As NotesRichTextItem
Call mailDb.OpenMail
If (mailDb.IsOpen = False) Then Call mailDb.Open("", "")
Set mailDoc = mailDb.CreateDocument
mailDoc.Form = "Memo"
mailDoc.SendTo = sendTo
mailDoc.CC = cc
mailDoc.BCC = bcc
mailDoc.Subject = subject
Set rtItem = mailDoc.CreateRichTextItem("Body")
Call rtItem.AppendText(body)
If Not(linkTo Is Nothing) Then
Call rtItem.AddNewLine(2)
Call rtItem.AppendDocLink(linkTo, "Double-click to open document")
End If
Call mailDoc.Send(False)
SendMailMemo = True
Exit Function
ErrorHandler:
Print "Error " & Str$(Err) & ": " & Error$
Resume TheEnd
TheEnd:
SendMailMemo = False
End Function
[ 本帖最后由 imzh 于 2006-8-15 09:12 AM 编辑 ]
liuyu0851
12-09-06, 09:42 AM
能不能多加一些注釋啊 ̄我是才開始學這個 ̄也正好遇到這個問題!我很想用lotusscript來寫!
我只是想先試驗發mail所以做了點修改
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set dc = db.AllDocuments
Set doc = dc.getnthdocument(j)
Call SendMailMemo(doc.Dept,"","","定时提醒:您还有任务未完成或未标记已完成! " ,_
"主题:,请点击图标查看详细信息",doc)
End Sub
Function SendMailMemo(sendTo As Variant, _
cc As Variant, _
bcc As Variant, _
subject As String, _
body As String, _
linkTo As NotesDocument) As Integer
On Error Goto ErrorHandler
Dim mailDb As New NotesDatabase("", "")
Dim mailDoc As NotesDocument
Dim rtItem As NotesRichTextItem
Call mailDb.OpenMail
If (mailDb.IsOpen = False) Then Call mailDb.Open("", "")
Set mailDoc = mailDb.CreateDocument
mailDoc.Form = "Memo"
mailDoc.SendTo = sendTo
mailDoc.CC = cc
mailDoc.BCC = bcc
mailDoc.Subject = subject
Set rtItem = mailDoc.CreateRichTextItem("Body")
Call rtItem.AppendText(body)
If Not(linkTo Is Nothing) Then
Call rtItem.AddNewLine(2)
Call rtItem.AppendDocLink(linkTo, "Double-click to open document")
End If
Call mailDoc.Send(False)
SendMailMemo = True
Exit Function
ErrorHandler:
Print "Error " & Str$(Err) & ": " & Error$
Resume TheEnd
TheEnd:
SendMailMemo = False
End Function
做到的是一個動作裡面!名字叫mail當我點擊它的時候沒有發mail到我的郵箱裡面啊!是不是下面的子函數還需要修改什麼?
liuyu0851
12-09-06, 11:07 AM
問題已經解決 ̄謝了 ̄
vBulletin® v3.7.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.