附件放置在RTF邮件中

时间:2016-12-06 09:42:46

标签: c# outlook rtf

我想通过MailOutlook发送C#,但我的Attachments展示位置有问题。我有以下代码:

if (strBody.StartsWith(@"{\rtf"))
{   
    mailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText;                    
    mailItem.RTFBody = Encoding.UTF8.GetBytes(strBody);

    mailItem.Attachments.Add(strAttachment, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, int.MaxValue, null);

}
else
{
    mailItem.Body = strBody;
    mailItem.Attachments.Add(strAttachment, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, 1, null);
}

我的strBody具有以下价值:

{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1031 {\ fonttbl {\ f0 \ fnil \ fcharset0 Arial;}} {\ colortbl; \ red255 \ green0 \ blue128; \ red0 \ green128 \ blue255;} \ viewkind4 \ uc1 \ pard \ fs20 Sehr geehrte \ cf1 Damen \ cf0 und \ cf2 Herren \ cf0,\ par \看齐 小时候我是AB \ fs20 \ par }

但我的Mail看起来像这样:

RTF Mail Body

现在我的问题是,

  1. Attachments可以显示为额外的行,就像邮件不是RTF格式一样吗?
  2. 如果不是1.,那么如何让我的Attachments显示在最后?

1 个答案:

答案 0 :(得分:1)

嗯,你做的一切都是正确的。每个值> 1将附件放在邮件的末尾。在“hier ihre AB”之后放置它。看起来很傻但很好...... 作为一个小解决方法,我也使用它,放置一些新的线条。尽可能将附件放在最后一句话之下。

或者您将邮件编写为HTML类型。减少问题。

编辑:

如您所见,该文件位于邮件的末尾。

编辑II:

以下是将附件行中的附件作为HTML发送电子邮件的方法示例:

    static void Main(string[] args)
    {
            Outlook.Application tmpOutlookApp = new Outlook.Application();
            Outlook.MailItem tmpMessage = (Outlook.MailItem)tmpOutlookApp.CreateItem(Outlook.OlItemType.olMailItem);
            tmpMessage.HTMLBody = "Test";
            String sDisplayName = "Test";
            int iPosition = (int)tmpMessage.Body.Length + 1;
            int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
            Outlook.Attachment oAttach = tmpMessage.Attachments.Add(@"C:\Test.txt", iAttachType, iPosition, sDisplayName);
            tmpMessage.Subject = "Your Subject will go here.";
            Outlook.Recipients oRecips = (Outlook.Recipients)tmpMessage.Recipients;
            Outlook.Recipient tmpRecipient = (Outlook.Recipient)oRecips.Add("EMail");
            tmpRecipient.Resolve();
            tmpMessage.Send();
    }