使用outlook MailItem循环发送多封电子邮件

本文关键字:电子邮件 outlook MailItem 循环 使用 | 更新日期: 2023-09-27 18:16:42

你好,我正在开发一个outlook插件,作为工作流程的一部分,它应该采用mailItem主体和主题,对于每个收件人,它应该根据收件人的电子邮件更改消息主体。

问题是它只发送第一封电子邮件,在Send();之后,它不发送电子邮件给其他收件人

 Outlook.Application application = Globals.ThisAddIn.Application;
        Outlook.Inspector inspector = application.ActiveInspector();
        Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem;
        myMailItem.Save();

        if (myMailItem != null)
        {
            myMailItem.Save();
            PorceesData(myMailItem);
        }
           ..
           ..
           ..
           ..
   private void ProcessData(MailItem oMailItem)
      {
Recipients recipients = oMailItem.Recipients;
string Body = oMailItem.Body;
string To = oMailItem.To;
string CC = oMailItem.CC;
string bcc = oMailItem.BCC;
foreach (Recipient r in recipients)
{
   if (r.Resolve() == true)
    {
        string msg = "Hello open the attached file (msg.html); 
        string address = r.Address;
        oMailItem.Body = msg;
         oMailItem.To = address;
         oMailItem.Subject = "my subject"
        foreach (Attachment t in oMailItem.Attachments)
         {
              t.Delete();
            }
          oMailItem.Attachments.Add(@"mydirectory");
           oMailItem.Send();
}

使用outlook MailItem循环发送多封电子邮件

_MailItem.Send()关闭当前检查器。这不是在_MailItem.Send文档中,而是实际的Outlook实现。你也许应该想出另一种方法。我建议为您希望发送的每条消息创建一个新的MailItem实例。

你可以创建一个新的MailItem使用…

Outlook.MailItem eMail = (Outlook.MailItem)
Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olMailItem);
eMail.Subject = subject;
eMail.To = toEmail;
eMail.Body = body;
eMail.Importance = Outlook.OlImportance.olImportanceLow;
((Outlook._MailItem)eMail).Send();

发送到所有收件人后,您可以使用以下命令手动关闭当前检查器( Send()隐式调用此方法)

((Outlook._MailItem)myMailItem).Close(Outlook.OlInspectorClose.olDiscard)