如果未回复第一封电子邮件,Outlook宏将发送另一封电子邮件

时间:2016-11-04 16:04:04

标签: vba outlook outlook-vba

我是Outlook宏的新手。

我之前设计了一个宏来通过附加文件和发送到特定电子邮件来发送电子邮件。

如果收件人从不回复我的第一封电子邮件,是否可以使用Outlook vba发送另一封提醒电子邮件?

Sub MonthlyInterco()

mth = Format(DateAdd("m", -1, Date), "mmmyy")


   Call SendFiles("C:\Users\haha\Desktop\interco\")

End Sub
Function SendFiles(fldName As String, Optional FileType As String = "*.*")



Dim fName As String
Dim sAttName As String

Dim olApp As Outlook.Application
Dim olMsg As Outlook.MailItem
Dim olAtt As Outlook.Attachments

Set olApp = Outlook.Application
Set olMsg = olApp.CreateItem(0) ' email
Set olAtt = olMsg.Attachments

' to send all
fName = Dir(fldName)

'to send only certain extensions
'fName = Dir(fldName & FileType)


    olAtt.Add fldName & "XYZ " & mth & " INTERCO STATEMENT.pdf"

  Debug.Print fName
   fName = Dir


' send message
With olMsg
  .Subject = mth & " Interco Reconciliation"
  .To = "xxx@hotmail.com"
  .CC = "yyy@hotmail.com"
  .HTMLBody = "Hi all," & "<br /><br /> Attached is " & mth & " interco schedule, kindly reconcile and update us if" & "<br /><br /> 1)      Any discrepancies" & "<br />2)      All amount tie to your interco bal" & "<br /><br /> Thank you." & "<br /><br /> Best Regards," & "<br /> zzz" & "<br /> "
  .Display
End With

End Function

1 个答案:

答案 0 :(得分:0)

您可以考虑两种基本方法。

第一种方法是使用事件。我不一定推荐这种方法,因为大多数人在处理事件之前喜欢一些经验。您可以编写例程并告诉Outlook每次发生特定事件时都执行它。例如,有发送电子邮件事件和收到的电子邮件事件。您可以编写每次发送电子邮件时执行的例程。因为你不想放慢你的正常工作,所以我不会在那个例程中做太多。您也许可以将时间和接收者电子邮件地址添加到文本文件的末尾。类似的例程可以在收到电子邮件时记录时间和发件人电子邮件地址。

另一个例程可以每天运行一次来​​处理这些文本文件。我会在Excel VBA中编写此例程,因此可以将结果写入工作表,这将有助于您开发宏。此宏必须匹配发送给John Doe的电子邮件,以防止从John Doe收到的电子邮件,并生成您尚未收到回复的电子邮件列表。这些电子邮件的接收者是您要向其发送追踪电子邮件的人。

如果上述方法对您有吸引力,请将其拆分为其组件。不要搜索满足你想要的一切的例程,因为你找不到它。不要发布一个问题,要求为您编写例程,因为这个站点是供程序员互相帮助开发的;它不是一个免费的编码网站。

查找Outlook事件。我不认为Outlook VBA上的帮助与Excel VBA上的帮助一样好,但它确实存在。查找所需的两个事件例程的示例。查找文本文件。你如何附加到文本文件?这并不困难。你如何匹配发送和接收的文本文件中的条目?也许最简单的出发点是将文件内容复制到工作表,然后按电子邮件地址排序。一步编码一步宏。如果您遇到特定步骤有困难,请到这里寻求帮助。您可以提出的问题数量没有限制,只要每个节目都显示您尝试过的代码,并解释哪些内容不符合您的预期/期望。

第二种方法是每天搜索一次收件箱和已发送邮件的例程,并提取事件例程记录的信息。我已经为您提供了一个指向例程的链接,该例程搜索收件箱并将每个电子邮件的选定属性输出到工作簿。这可能是你需要的例程的骨架。

您可以搜索您收到的电子邮件的文本正文:“[CR] [LF] [CR] [LF] 2016年11月4日星期五13:43 zzzz&gt;写道:[CR] [LF] [CR] [LF]”。几乎所有对您的电子邮件的回复都将包含此格式的文本,其中zzzz将是您的姓名,xxxx @ yyyy将是您的电子邮件地址。这可以帮助匹配。

我试图给你一些想法。我怀疑你可以在发送和接收的电子邮件之间实现100%完美匹配,但如果你通过必要的步骤缓慢工作,你可以创建一组非常有用的宏。