自动化外发电子邮件问题

Automating Outgoing Emails Issue

我是新手,所以请多多包涵。预先感谢您的帮助。我正在为我每季度和每月发送的许多电子邮件编写代码以实现工作自动化,因此我不必一直发送它们。

我的问题: 我昨天弄好之后就不能发邮件了

步骤:

我的代码是这样做的:

  1. 将Application_Reminder设置为对象
  2. 将 DIM 设置为 mailItem 和 strbody(用于字符串正文)
  3. If then 语句 Item.Class = OlTask​​ Then
  4. 在子字符串中查找具有特定 str 主题“api movements recurring email”的项目然后
  5. 如果为 true 使用变量创建电子邮件
  6. 电子邮件正文
  7. 包含主题、地址、HTML 正文和附件的 WITH 语句。
  8. 发送电子邮件
  9. 许多 ElseIf 语句以包含多个电子邮件。

昨天我将月度电子邮件设置为 运行,他们做得很完美。

我认为问题是:正在创建的任务,或者是应用提醒对象。另外,我想知道 oltask 是否不适合重复执行此任务以正确 运行 因为任务可能在截止日期后更改。我也试过完成任务,然后发送重现,但也没有用。

这是我的代码请注意我删除了所有敏感信息,有 11 封电子邮件但我只在这里显示 2 封以便查看):

Private Sub Application_Reminder(ByVal Item As Object)
    Dim objPeriodicalMail As MailItem
    Dim strbody As String
    
    If Item.Class = olTask Then
    'change the following item subject so it knows what to send
       If InStr(LCase(Item.Subject), "api movements recurring email") Then
          Set objPeriodicalMail = Outlook.Application.CreateItem(olMailItem)
          'Change the following email information as per your actual needs
          strbody = "<H3><B>Hi Sanmin,</B></H3>" & _
                    "I hope this e-mail finds you well.  This is a friendly reminder to please send the completed API material movements checklist for this month by the first business day of the coming month. I have attached the month-end checklist for your use. If there are no API movements in transit at the end of the month, please send me an e-mail stating so." & _
                    "<br><br><B>Thank you,</B>" & _
                    "<br><br><br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B>P : </B>" & _
                    "<br><B>E: </B>"

          
          With objPeriodicalMail
               .Subject = "API Movements Report"
               .To = ""
               '.To = ""
               '.CC = ""
               .HTMLBody = strbody & .HTMLBody
               .Attachments.Add "C:\Automated Emails\API In-Transit Material Movements Checklist.xlsx"
               .Send
          End With

          
        'change the following item subject so it knows what to send
       ElseIf InStr(LCase(Item.Subject), "beth quarterly recurring email") Then
          Set objPeriodicalMail = Outlook.Application.CreateItem(olMailItem)
          'Change the following email information as per your actual needs
            strbody = "<H3><B>Hi Beth,</B></H3>" & _
                    "" & _
                    "<br><br><B>Thank you,</B>" & _
                    "<br><br><br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>" & _
                    "<br><B></B>"

          
          With objPeriodicalMail
               .Subject = "Quarterly Inventory Reserve Inquiry"
               .To = ""
               '.To = ""
               '.CC = ""
               .HTMLBody = strbody & .HTMLBody
               .Send
          End With
       End If
    End If
End Sub

您的代码是有效的,我看不出有任何可能的原因可以阻止它 运行ning。您可以设置一个断点并等到提醒事件被触发,这样您就可以调试代码并查看它是如何工作的。

但是 VBA 宏可以在 Outlook 中禁用,您的代码可能永远不会 运行。我建议检查 Outlook 中的信任中心设置以确保 VBA 宏未被禁用。

另一种可能的选择是定时器。有关详细信息,请参阅 Outlook VBA - Run a code every half an hour