2016-12-06 3 views
2

Я хочу отправить Mail через Outlook и C#, но у меня возникла проблема с размещением моего Attachments. У меня есть следующий код:Наложение в формате RTF Mail

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 \ ff20 Sehr geehrte \ cf1 Damen \ cf0 und \ cf2 Herren \ cf0, \ par \ par hier ihre AB \ fs20 \ par }

Но мой Mail выглядит следующим образом:

RTF Mail Body

Теперь мой вопрос,

  1. Может Attachments будет отображаться как дополнительный Роу, как, когда почта не отформатирована в формате RTF?
  2. Если нет 1., то как я могу получить свой Attachments для отображения в конце?

ответ

1

Ну, вы все сделали правильно. Каждое значение> 1 помещает вложение в конце вашей почты. После «hier ihre AB» он помещается. Выглядит глупо, но хорошо ... В качестве небольшого обходного пути я так же использовал его, разместил несколько новых строк. Столько, сколько требуется, чтобы разместить приложение в своем последнем предложении.

Или вы пишете Mail как тип HTML. Меньше проблем.

EDIT:

Как вы можете видеть, файл помещается в конце письма.

EDIT 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(); 
    } 
+0

Я видел идею с 'HTML' как но мой текст исходит от 'RichTextBox', поэтому он находится в' RTF'. Есть ли хороший способ конвертировать 'RTF' в' HTML'? –

+0

@ E-Nuff эта документация помогла мне много: https://www.codeproject.com/kb/recipes/rtfconverter.aspx – Cataklysim

+0

Thnk you. Один последний вопрос: возможно ли, что приложение не отображается в теле, но установлено как обычная почта в качестве дополнительной строки? –

Смежные вопросы