Как мне отправить HTML (составной / альтернативный) из веб-служб Exchange (2010 SP1)
Вопрос
Эта проблема выявилась, когда я пытался отправить HTML-сообщение со встроенными изображениями (вложениями) через EWS.Однако я отступил к самой простой форме и обнаружил, что не могу даже отправлять HTML-сообщения.
Я использую C #, .NET 4, EWS API 1.1, Exchange Server 2010 с пакетом обновления 1.
Вот суть моего кода:
ExchangeConnection = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ExchangeConnection.Credentials = new WebCredentials(Username, Password, Domain);
ExchangeConnection.Url = new Uri(ServiceURI);
string MailBody = @"<html><head></head><body>
This is a <b>test</b> <strong>HTML</strong> <em>message</em>.<br><br>
Did it work?</body></html>";
NewMessage = new EmailMessage(ExchangeConnection);
NewMessage.Subject = "Test HTML Message #001";
NewMessage.Body = MailBody;
NewMessage.Body.BodyType = BodyType.HTML;
NewMessage.ToRecipients.Add("tony@zierniemann.com");
NewMessage.Send();
Используя этот код, я получаю сообщение следующего содержания:
Subject: Test HTML Message #001
Thread-Topic: Test HTML Message #001
Thread-Index: Acuy3U6nqQTa4W4ZQu6ueHPb2nPDPg==
Date: Thu, 13 Jan 2011 04:49:48 +0000
Message-ID: <2FDB41070D0AC24DB5BC8B80751063630B74A5@xxxxx.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [x.x.x.x]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2010122901)]
X-MAIL-FROM: <planit@xxxxx.com>
X-SOURCE-IP: [67.136.148.58]
X-AnalysisOut: [v=1.0 c=1 a=WYc53Y7r_f4A:10 a=BLceEmwcHowA:10 a=kj9zAlcOel]
X-AnalysisOut: [0A:10 a=xqWC_Br6kY4A:10 a=ERe/uVw5acJt2lgRGY+7Og==:17 a=10]
X-AnalysisOut: [TGqZ3wK2PL4t1FdnoA:9 a=mfhh-WWaJa5gWHOyyF854Vzt7EAA:4 a=Cj]
X-AnalysisOut: [uIK1q_8ugA:10]
This is a test HTML message.
Did it work?
Здесь нет объявления MIME и нет раздела text / html.
Если я отправлю аналогичное сообщение через Outlook (на том же сервере Exchange), я получу что-то вроде этого:
Subject: Test From Outlook
Thread-Topic: Test From Outlook
Thread-Index: AcuzMwJCFB8PS6wYQeeV4IeSkT/mxQ==
Date: Thu, 13 Jan 2011 15:03:17 +0000
Message-ID: <E026BAD23A27DB42B74F0DB569E9986977F237@CHALLENGER.DenverZoo.lan>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [x.x.x.x]
Content-Type: multipart/alternative;
boundary="_000_E026BAD23A27DB42B74F0DB569E9986977F237CHALLENGERDenverZ_"
MIME-Version: 1.0
X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2010122901)]
X-MAIL-FROM: <tonyn@xxxx.com>
X-SOURCE-IP: [67.136.148.58]
X-AnalysisOut: [v=1.0 c=1 a=olvCdMnC_oMA:10 a=BLceEmwcHowA:10 a=xqWC_Br6kY]
X-AnalysisOut: [4A:10 a=ERe/uVw5acJt2lgRGY+7Og==:17 a=2iPVs5MlqxP_VJ4oz58A]
X-AnalysisOut: [:9 a=x0_hJeNGqEWpZ67nkUaF-VHO8CMA:4 a=CjuIK1q_8ugA:10 a=yM]
X-AnalysisOut: [hMjlubAAAA:8 a=SSmOFEACAAAA:8 a=bSa8Y9cTgW9e4uXm0lgA:9 a=w]
X-AnalysisOut: [EVqP49dmlVP1afgSrUA:7 a=MTMROL1LpFqQeTH2_C9armvf4mgA:4]
--_000_E026BAD23A27DB42B74F0DB569E9986977F237CHALLENGERDenverZ_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
This is an HTML message.
What do the headers look like?
Tony
--_000_E026BAD23A27DB42B74F0DB569E9986977F237CHALLENGERDenverZ_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
... the correct html code for the message follows here ...
Кто-нибудь может объяснить мне, как получить сообщение, подобное второму, с помощью кода, используя EWS?Спасибо!
Решение
У меня только что была очень похожая проблема.В конце концов мы добрались до одной конкретной учетной записи, которая получала искаженную версию электронного письма вместо правильного MIME-текста, состоящего из нескольких частей, и HTML.Оказывается, проблема заключалась в том, что эта учетная запись была настроена в Exchange на "Использовать настройки по умолчанию" для электронных писем MAPI Rich Text (на вкладке "Общие"), когда для других учетных записей было установлено значение "Никогда".
Таким образом, проблема заключалась в основном в том, что Exchange знал об отправленном контактном электронном письме и пытался быть "умным" и отправить его в проприетарном формате для Outlook, но клиент для этого адреса не использовал Outlook, и поэтому они не смогли правильно просмотреть электронное письмо.Я думаю, что также возможно изменить этот параметр на глобальном уровне, а не по желанию пользователя, но я не уверен, где это находится.
Причина, по которой это работает при отправке через Outlook, заключается в том, что Outlook 2010 способен отправлять электронное письмо таким образом, чтобы оно было в формате HTML, в то время как EWS managed API, похоже, не способен этого сделать.
Другие советы
Я только что нашел это Страница который объясняет, что происходит и как изменить настройку.
Таков их вывод:
Последнее, что мы проверили, которое выявило, в чем проблема, заключалось в запуске следующего exchange powershell “get-remotedomain | fl” .Затем мы обнаружили, что тип контента был установлен в MIMEText, который “преобразует все сообщения в MIME-сообщения, использующие форматирование текста” (т. е. обычный текст).Затем мы изменили тип содержимого на mimehtmltext (преобразует сообщения в MIME-сообщения, использующие форматирование HTML, если только исходное сообщение не является текстовым.Если исходное сообщение представляет собой текстовое сообщение, исходящее сообщение представляет собой MIME-сообщение, использующее форматирование текста), выполнив следующую команду “get-remotedomain | set-remotedomain -ContentType MimeHtmlText”.