VBA 通过带附件的 Lotus Notes 6.5 发送电子邮件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/26133535/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
VBA to send email via Lotus Notes 6.5 with Attachment
提问by LukeJ
I have big problem. I have macro to send multiple emails from Excel via Lotus Notes 6.5
我有大问题。我有宏通过 Lotus Notes 6.5 从 Excel 发送多封电子邮件
The code of my macro is:
我的宏的代码是:
Public Function SendNotesMail()
'This public sub will send a mail and attachment if neccessary to the recipient including the body text.
'Requires that notes client is installed on the system.
'Set up the objects required for Automation into lotus notes
Dim Subject As String
Dim Attachment As String
Dim Recipient As String
Dim BodyText As String
Dim SaveIt As Boolean
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
Dim EmailSend As Object
Dim EmailApp As Object
'Start a session to notes
Set Session = CreateObject("Notes.NotesSession")
'Get the sessions username and then calculate the mail file name.
'You may or may not need this as for MailDBname with some systems you can pass an empty string
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = "[email protected]"
MailDoc.Subject = "TDBank Validation File"
MailDoc.Body = "Here is your TDBank Validation File for today."
MailDoc.SAVEMESSAGEONSEND = SaveIt
'Set up the embedded object and attachment and attach it
If Attachment <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM.Add("H:\Document.pdf")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "H:\Document.pdf")
MailDoc.CREATERICHTEXTITEM ("H:\Document.pdf")
End If
'Send the document
MailDoc.Send 0, Recipient
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Function
And problem is that attachments is not assigned to email when i receiving it. I did not get any error or sth like that. Just only email without attachment.
问题是附件在我收到时没有分配给电子邮件。我没有得到任何错误或类似的东西。只是没有附件的电子邮件。
File 1.pdf is in the same folder as my xls with VBA.
文件 1.pdf 与我使用 VBA 的 xls 位于同一文件夹中。
Could You please help me.
请你帮助我好吗。
回答by nempoBu4
0. It is not clear in your code where you Attachment
variable is filled by value. Make sure that this value is not empty.
1. According to documentation you can specify only type%
and source$
parameters for EmbedObject
method:
0.在您的代码中不清楚您的Attachment
变量是按值填充的。确保该值不为空。
1.根据文档,您只能为方法指定type%
和source$
参数EmbedObject
:
Set notesEmbeddedObject = notesRichTextItem.EmbedObject(1454, "", "H:\Document.pdf")
2. You can use Body
field to embed an object:
2. 你可以使用Body
field 来嵌入一个对象:
'Your code
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = "[email protected]"
MailDoc.Subject = "TDBank Validation File"
MailDoc.SAVEMESSAGEONSEND = SaveIt
Dim richTextItem As Object
Set richTextItem = MailDoc.CreateRichTextItem("Body")
richTextItem.AppendText("Here is your TDBank Validation File for today.")
If Attachment <> "" Then
richTextItem.EmbedObject(1454, "", "H:\Document.pdf")
End If
'Your code