【问题标题】:Cant send email using VBA无法使用 VBA 发送电子邮件
【发布时间】:2016-04-15 22:09:30
【问题描述】:

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

我已经开始使用以下非常简单的代码来构建它:

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

但是,我工作的公司似乎已锁定 .send。电子邮件将创建正常但不会发送。任何人都可以想办法解决这个问题吗?我考虑过使用 .sendkeys "^{ENTER}" 但我知道它们不是做事的好方法。

提前谢谢你 马特

【问题讨论】:

  • “似乎已锁定 .send”——您的意思是您收到了安全提示吗?
  • 不,它运行代码但不执行任何操作。显然,当公司开始使用 Office 2010 时,他们锁定了 VBA 的一些功能,这就是其中之一。
  • 执行代码时 Outlook 是否正在运行?
  • 该部分代码已被禁用,业务范围内接受
  • 如果您调用保存而不是发送,您是否在草稿文件夹中看到保存的消息?无法“禁用”某些 OOM 功能。

标签: vba email outlook sendkeys


【解决方案1】:

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

“将 .Send 更改为 .Display 并将 SendKeys "^{ENTER}" 放在 With mimem 行之前。”

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

【讨论】:

  • 嗨,我今天早些时候玩过 sendkeys,它要么工作正常,要么突出显示 from 列,我看不出它适用的任何逻辑原因。我一直在试图找到一种方法让 vba 找到“发送”这个词并单击。到目前为止还没有快乐
  • 值得一试。我希望你能找到解决办法。祝你好运
【解决方案2】:

如果您可以不使用 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

顺便说一句,这还有一个额外的好处,就是让您可以欺骗发件人,让它看起来好像来自其他人。我不知道这是否方便,但仅供参考。

【讨论】:

  • 嗨 Hambone,我考虑过这样做,但是出于安全目的,我必须使用 Outlook。我开始在这里看到一个循环。不过感谢您的回复 - 马特
  • 我听到你的声音......如果权力变得绝望,请记住它。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 2017-10-28
  • 2015-06-11
  • 2015-09-06
  • 2011-09-28
  • 2021-04-13
  • 2021-09-12
相关资源
最近更新 更多