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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-12 04:43:08  来源:igfitidea点击:

VBA to send email via Lotus Notes 6.5 with Attachment

excelexcel-vbalotus-notesvba

提问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 Attachmentvariable 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 EmbedObjectmethod:

0.在您的代码中不清楚您的Attachment变量是按值填充的。确保该值不为空。
1.根据文档,您只能为方法指定type%source$参数EmbedObject

Set notesEmbeddedObject = notesRichTextItem.EmbedObject(1454, "", "H:\Document.pdf")

2. You can use Bodyfield to embed an object:

2. 你可以使用Bodyfield 来嵌入一个对象:

'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