无法使用VBA发送电子邮件

时间:2016-01-11 14:46:33

标签: vba email outlook-vba sendkeys

我正在创建一个自动发送电子邮件的工具。

我已经开始使用非常简单的代码构建它,如下所示:

Set outlookobj = New Outlook.Application
Set mitem = outlookobj.CreateItem(olMailItem)

With mitem
.To = "A_Valid_Email@email.com"
.Subject = "TEST"
.Body = "test"
.Display
.Send

End With
End Sub

然而,我工作的公司似乎已经锁定了。电子邮件将创建正常但不会发送。谁能想到解决这个问题的方法呢?我考虑过使用.sendkeys" ^ {ENTER}"但我知道他们不是一个很好的做事方式。

提前谢谢你 马特

2 个答案:

答案 0 :(得分:0)

如果您没有使用Outlook,则可以使用CDO发送电子邮件。我不确定这是否会解决您的安全问题,但可能值得一试。这是一个例子。

Sub CDO_Mail_Small_Text(ByVal RecipientList As String, ByVal From As String, _
        ByVal Subject As String, ByVal Body As String, ByVal Attachment As String, _
        ByVal cc As String)
    Dim iMsg As Message
    Dim iConf As Configuration
    Dim strbody As String
    Dim Flds As Variant

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1    ' CDO Source Defaults
    Set Flds = iConf.Fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
                       = "webmail.zimmer.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Update
    End With

    With iMsg
        Set .Configuration = iConf
        .To = RecipientList
        .cc = cc
        .From = From
        .Subject = Subject
        .HTMLBody = Body
    End With

    If Attachment <> "" Then
        iMsg.AddAttachment Attachment
    End If

    iMsg.Send

End Sub

顺便说一句,这还有一个额外的好处,就是让你欺骗发件人,让它看起来好像是来自别人。我不知道这是否方便,但仅仅是FYI。

答案 1 :(得分:0)

我指的是这个帖子:Excel VBA sending mail using Outlook - Send method fails解决方案如下:

&#34;更改。发送到.Display并将SendKeys&#34; ^ {ENTER}&#34;在使用mitem line之前。&#34;

你至少可以尝试一下,也许它也适合你。 :)