通过 Excel VBA 发送带附件的电子邮件

Sending Email With Attachment Through Excel VBA

我想通过 Outlook 从 Excel 通过电子邮件发送一份报告。

我正在使用我自己和同事的电子邮件地址对此进行测试。我得到一个 "Undeliverable" Error.

消息称无法联系到收件人,建议稍后尝试发送电子邮件。

Sub CreateEmail()

Dim OlApp As Object
Dim OlMail As Object
Dim ToRecipient As Variant
Dim CcRecipient As Variant

Set OlApp = CreateObject("Outlook.Application")
Set OlMail = OlApp.createitem(olmailitem)

For Each ToRecipient In Array("jon.doe@aol.com")
    OlMail.Recipients.Add ToRecipient
Next ToRecipient

For Each CcRecipient In Array("jon.doe@aol.com")
    With OlMail.Recipients.Add(CcRecipient)
        .Type = olCC
    End With
Next CcRecipient

'Fill in Subject field
OlMail.Subject = "Open Payable Receivable"

'Add the report as an attachment
OlMail.Attachments.Add ("C:\OpenPayRecPrint2.pdf")

'Send Message
OlMail.Send

End Sub

确保引用 Outlook 对象库

Option Explicit
Sub CreateEmail()

    Dim OlApp As Object
    Dim OlMail As Object
    Dim ToRecipient As Variant
    Dim CcRecipient As Variant

    Set OlApp = CreateObject("Outlook.Application")
    Set OlMail = OlApp.createitem(olmailitem)

    For Each ToRecipient In Array("jon.doe@aol.com")
        OlMail.Recipients.Add ToRecipient
    Next ToRecipient

    For Each CcRecipient In Array("jon.doe@aol.com")
        With OlMail.Recipients.Add(CcRecipient)
          .Type = olcc
        End With
    Next CcRecipient

    'Fill in Subject field
    OlMail.Subject = "Open Payable Receivable"


    'Add the report as an attachment
    OlMail.Attachments.Add "C:\temp\test1.xlsx"
    OlMail.Display ' <--for testing, to send use OlMail.Send

    'OlMail.Send
 End Sub

添加多个抄送收件人 In Array("jon.doe@aol.com","jon.doe@aol.com")

Sub AUTOGENERATEEMAIL()

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

strBody = "<FONT SIZE = 3>Good day all, " & "<br>" & "<br>" & "Please see attached." & "<br>" & "<br>" & "Pleasant Regards"

With OutMail
    .Display
    .To = "Roti@hotmail.com; sall@hotmail.com; mj@hotmail.com; "
    .CC = ""
    .BCC = ""
    .Subject = "Finance" & path
    .HTMLBody = strBody & .HTMLBody
    .Attachments.Add ("\Finance\Company Shared Folders\UserShares\Finance Tool\Finance Assistant Tools\Finance.xlsb")
    .Display

End With

Set OutMail = Nothing
Set OutApp = Nothing

End Sub