PDA

View Full Version : 为什么我的代理在服务器上运行了,但却没有执行@MAILSEND?


imzh
02-08-06, 08:57 AM
如题,但奇怪的是在客户端手动运行这个代理就没有问题?
麻烦各位高手指点迷津,先谢了!

代理代码如下:

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 编辑 ]

imzh
02-08-06, 02:06 PM
补充说明一下:
1、此代理每天定时运行于服务器一次
2、从文档中的值来看,代理的确运行过了,因为PostedDate域的值已被调整过了,但好像就是@mailsend这一句没起作用

月影无限
02-08-06, 07:17 PM
1.试一下做一按键,调试(@MailSend(people;"";"";"任务提醒 (" + Subject + ")" ;"任务定时提醒,主题:" + Subject;"";[IncludeDoclink]);是否可以成功
2检查一下你是否有在服务器运行代理的权限,这很重要哦,我就有吃过这个亏

imzh
03-08-06, 11:25 AM
原帖由 月影无限 于 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
一 定 是权限问题,

imzh
04-08-06, 09:55 AM
连代理的权限属性我都看过了,还是不行:L


可我手动运行这个代理或单独运行@MAILSEND那一句却没问题:-(

暴风雪
04-08-06, 11:23 AM
agent签名的ID是可以发mail的吗?

imzh
04-08-06, 01:18 PM
原帖由 暴风雪 于 2006-8-4 11:23 AM 发表
agent签名的ID是可以发mail的吗?

是的,是管理员的,完全权限

imzh
07-08-06, 12:23 AM
问题解决了!:lol
我请教了学习时的老师,老师说他也不能确认@MailSend公式是否可以在Agent中运行,他如果通过后台Agent代码发送邮件,一般使用LotusScript中NotesDocument.Send()方法
我将代理用LotusScript改写后,果然没有任何问题了。看来@MailSend在Agent中运行确实有问题。
提请大家以此为戒! 呵呵 :lol

非凡公子
07-08-06, 10:07 AM
呵呵,应该加个已解的标记~~~~呵呵,我在代理里面有用过公式,帮助里面也有说明,有些是不能用的,你的这个确实没用过~~~

月影无限
08-08-06, 08:55 PM
呵呵,几天没有来,看来问题已解决了,真开心。
所以我们对于编程中碰到,还是要一步一步的拆开分析。

shuor
10-08-06, 09:05 AM
我前几天也碰到了不能说同样但是类似的问题,折腾了我整整一天.
你试试给这个数据库的试图,加一个默认试图,代理mailsend那句公式才能执行
你可以试试:)

imzh
10-08-06, 09:15 AM
原帖由 shuor 于 2006-8-10 09:05 AM 发表
我前几天也碰到了不能说同样但是类似的问题,折腾了我整整一天.
你试试给这个数据库的试图,加一个默认试图,代理mailsend那句公式才能执行
你可以试试:)

谢谢,我已注意到这个问题了,但最终没有再用@mailsend再试

apexzlm
15-08-06, 08:51 AM
能贴出完整的Lotusscript 的语句吗?我好学习一下.

imzh
15-08-06, 09:10 AM
原帖由 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
問題已經解決 ̄謝了 ̄