Outlook VSTO - mailItem正文问题

时间:2017-05-16 14:03:31

标签: c# email vsto office-interop outlook-addin

我在使用C#发送电子邮件时遇到问题。

我正在使用加载项,一切进展顺利。我可以像我想的那样发送邮件,但不能连续两次发送邮件"。 例如,我的加载项打开一个表单,在用户操作后发送一封电子邮件。 发送邮件时,表单已关闭,没关系。

但是有一段时间,我需要发送两封单独的电子邮件,第二封电子邮件的正文总是空的。顺便说一下,我填补"身体"我的邮件与Word( Microsoft.Office.Interop.Word )有一些格式化文本。
如果我使用 .Body 属性,则没有问题。

现在,我想知道这不是" Word"因为电子邮件部分正在运行,但只有正文是空的 我试图以相反的顺序发送我的邮件,看看它是否总是在第二封邮件中发生,我是对的。这不是关于电子邮件或他的内容,而是关于第二次发送的更多信息。 可能有些东西尚未被释放(没有正确发布的物品)或类似的东西,但我已经做好了。

我是怎么做的。

Outlook.MailItem mailItem = (Outlook.MailItem)new Outlook.Application().CreateItem(Outlook.OlItemType.olMailItem);
try
{
    mailItem.CC = currentUserExchange.PrimarySmtpAddress;
    mailItem.Importance = Outlook.OlImportance.olImportanceHigh;
    mailItem.Subject = "XXX";
    mailItem.To = finalRecipients;
    fillBody(mailItem, mailBody);
    mailItem.Send();
}
catch (Exception ex) { }
finally
{
    releaseObject(mailItem);
}


if (moderatorPin != String.Empty)
{
    Outlook.MailItem mailItemSecurity = (Outlook.MailItem)new Outlook.Application().CreateItem(Outlook.OlItemType.olMailItem);
    try
    {
        mailItemSecurity.Importance = Outlook.OlImportance.olImportanceHigh;
        mailItemSecurity.Subject = "XXX";
        mailItemSecurity.To = currentUserExchange.PrimarySmtpAddress;
        fillBody(mailItemSecurity, mailBodySecure);
        mailItemSecurity.Send();
    }
    catch (Exception ex) { MessageBox.Show("error : " + ex.Message); }
    finally
    {
        releaseObject(mailItemSecurity);
    }

}

和:

private void fillBody(Outlook.MailItem mailItem, String bodyMail)
{
    Word.Document document = mailItem.GetInspector.WordEditor;
    Word.Range rng = document.Paragraphs[1].Range;
    try
    {
        document.Paragraphs[1].LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle;

        rng.set_Style(Word.WdBuiltinStyle.wdStyleHtmlKbd);
        rng.Font.Color = (Word.WdColor)(fontColor.R + 0x100 * fontColor.G + 0x10000 * fontColor.B);
        rng.Text = bodyMail;
        rng.Select();
    }
    catch (Exception ex)
    {
        MessageBox.Show("XXX");
    }
    finally
    {
        releaseObject(rng);
        releaseObject(document);
    }
}

0 个答案:

没有答案