当前位置:软件学习 > 其它软件 >>

有关定时发送邮件代理不能发出邮件问题

我写了一个定时发邮件的代理,但手动运行是OK的,能发出邮件,但定时运行是不能发出邮件,查看Log属于正常,在规定的时间有运行,请各位高手帮忙解决,代码如下(是一个文件批核程序,需定时向待批核人发送邮件提醒):
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection  As NotesDocumentCollection
Dim Document As NotesDocument
Set db= session.CurrentDatabase

Dim dateTime As New NotesDateTime( "" )
dateTime.LSLocalTime = Now
Date$=dateTime.DateOnly 

searchFormula$ ={eStatus= "Approve1"|eStatus= "Approve2"|eStatus= "Approve3"|eStatus= "Approve4"|eStatus= "Sign"|eStatus= "MEApprove"|eStatus= "Modification"&DocType="MEItemForm"&vStatus != "删除"}


Set collection = db.Search(searchFormula$,Nothing,0)
Set Document = collection.GetFirstDocument()

While Not(Document Is Nothing)
SendTo = ""
tRequestName = Document.tRequestName(0)
If Document.eStatus(0)="Approve1" Then
SendTo=Document.ApprovalBy(0)
tTitle="Wait for Approval"
Elseif Document.eStatus(0)="Approve2" Then
SendTo=Document.ManagerBy(0)
tTitle="Wait for Approval"
Elseif Document.eStatus(0)="Approve3" Then
SendTo=Document.GManagerBy(0)
tTitle="Wait for Approval"
Elseif Document.eStatus(0)="Approve4" Then
SendTo=Document.MManagerBy(0)
tTitle="Wait for Approval"
Elseif Document.eStatus(0)="Sign" Then
SendTo=Document.SignBy(0)
tTitle="Wait for Sign"
Elseif Document.eStatus(0)="MEApprove" Then
SendTo=Document.tApproveBy(0)
tTitle="Wait for Disposal"
Elseif Document.eStatus(0)="MECheck" Then 
Call datetime.adjustDay(1)
If Document.tICompleteDate(0) =< datetime.DateOnly  Then
SendTo=Document.tApproveBy(0)
tTitle="Wait for Disposal"
Else
Exit Sub
End If
Elseif Document.eStatus(0)="MECheck" Then
Call datetime.adjustDay(-1)
If Document.tICompleteDate(0) =< datetime.DateOnly  Then
SendTo="Jimmy Zhang/ME2-OP1/DG-PCPartner@DG-PCPARTNER"
tTitle="Wait for Disposal(此项目已经超过预计完成日期一天以上)"
Else
Exit Sub
End If
Elseif Document.eStatus(0)="Modification" Then
SendTo=Document.tEnglishName(0)
tTitle="Wait for Modification"
End If


Dim newDoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim sdoc As NotesDocument
Set sdoc = Document
Set newDoc = New NotesDocument( db )
Set rtitem = New NotesRichTextItem( newDoc, "Body" )
Call rtitem.AppendText( " Click on the link to access the document " ) 
Call rtitem.AppendDocLink( sdoc, sdoc.Subject(0))
newDoc.Form="Memo"
newDoc.Subject = "(系统自动邮件提示!)"+"设备/工具/积架/工程申请 -- 申请人:" + tRequestName +" -- "+ tTitle
newDoc.SendTo = SendTo
newDoc.Send( False ) 

Set Document = collection.GetNextDocument(Document)
Wend
Exit Sub

End Sub --------------------编程问答-------------------- 可能是服务器的时间格式与你的本机时间格式不一样,这个语句不太保险:
If Document.tICompleteDate(0) =< datetime.DateOnly Then

由于是文本比较,服务器的时间格式与你的本机保存的文本型时间值格式可能不等(即使相同日期)。

最好用时间值做比较, 如果必须用文本作比较,那就在代码里确保tICompleteDate的格式是与 "20100319"类似的写法,然后比较的时候把datetime先转换为这个格式再比较。 --------------------编程问答-------------------- 除了二楼说的这个原因之外,还可以考虑一下是不是因为服务器所在的环境和邮件接收者的邮箱服务器之间是不是通的。因为手动运行的时候其实是用本地作为服务器。 --------------------编程问答-------------------- 将调试语句详细化,分析具体究竟是哪步出了问题,这么一大堆代码真的很不好分析。 --------------------编程问答-------------------- 捕捉一下Error

生成一条日志,根据这个去查找具体运行到哪一行有问题

再调整~
补充:企业软件 ,  Lotus
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,