我在使用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);
}
}