' 下面脚本以Action为"Test",Hook为Notification
Sub Test_Notification(ActionName,ActionType)
Dim entityObj
Dim attachmentsObj
Dim attachment
Dim FileName,FilePath
Set attachField =AttachmentFields.Item(0)
Set attachmentsObj = attachField.Attachments
numAttachments = attachmentsobj.Count - 1
Redim FilePathArray(0)
FilePathArray(0)=""
For i = 0 to numAttachments
set attachment = attachmentsObj.Item(i)
FileName=attachment.FileName
' 调用GetFilePath函数得到正确的下载路径
FilePath=GetFilePath(FileName)
' 将附件下载到FilePath指定的路径
Attachment.Load(FilePath)
Redim Preserve FilePathArray(i)
FilePathArray(i)=Filepath
Next
' 调用通过Notes客户端发送邮件的函数发送邮件
' 由于该脚本主要说明附件的发送,所以在SendNotesMail里面除了取
' CQ里记录类型的附件外,没有取其他信息,如果需要其他信息也容易
' 加入
Call SendNotesMail(FilePathArray)
End Sub
' =============================================================
' 增加得到下载附件到本机的文件路径,如果没有该目录,则创建
' 如果该文件已经存在,则先删除该文件的函数
' Author:killer215 Date:2007-2-2
' =============================================================
Function GetFilePath(FileName)
Dim FilePath,FileDirectory
FileDirectory="C:\Temp"
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
' 如果目录不存在,则创建该目录
If Not fs.FolderExists(FileDirectory) Then
fs.CreateFolder(FileDirectory)
End If
Filepath=FileDirectory & "\" & FileName
' 如果文件已经存在,则删除该文件
If fs.FileExists(FilePath) Then
Dim file
Set file = fs.GetFile(FilePath)
File.Delete
End If
GetFilePath=FilePath
End Function
' ===========================================
' 增加通过Notes客户端发送邮件的函数
' Author:killer215 Date:2007-1-26
' ===========================================
Function SendNotesMail(FilePathArray)
Dim Notesobj,dir,db,doc,item
Dim mailsrv,email_address,tolist,body,FileName
'创建一个Notes Com端口实例
Set notesobj = CreateObject("Lotus.NotesSession")
notesobj.Initialize
' 从本地的notes.ini文件得到邮件服务器,并且打开自己邮件数据库
mailsrv = notesobj.GetEnvironmentString("MailServer", True)
set dir = notesobj.GetDbDirectory(mailsrv)
set db = dir.OpenMailDatabase
If db.IsOpen Then
'创建一封新的邮件
set doc = db.CreateDocument
doc.ReplaceItemValue "Form", "Memo"
' 在这里添加邮件地址,这个信息可以从记录类型的当前处理人,和项目信息里
' 取得,如配置管理员,项目经理,测试人员邮箱等。
email_address="****@**.**.**"
tolist = split(email_address,",",-1,1)
doc.ReplaceItemValue "SendTo", tolist
doc.ReplaceItemValue "Subject", "测试通过notes接口发送带附件的邮件"
body = "通过ClearQuest发送带附件邮件的测试" & vbCrLf & vbCrLf
set item = doc.CreateRichTextItem("Body")
item.AppendText(body)
If FilePathArray(0)<>"" Then
For i=0 To ubound(FilePathArray)
item.EmbedObject 1454, "", FilePathArray(i)
Next
End If
doc.Send(False)
End If
End Function