Встроенный API электронной почты поддерживает отправку только текстовых сообщений электронной почты в виде Документы состояние:
Этот метод отправляет только текстовые сообщения. Вы не можете установить тело сообщения в формате HTML.
Что вы можете сделать, это прикрепить изображения к электронному письму:
EmailMessage mail = new EmailMessage();
mail.Sender = new EmailRecipient("test@example.com");
mail.To.Add(new EmailRecipient("someone@example.com"));
mail.Subject = "Hello";
mail.Body = "World";
var file = await StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///Assets/StoreLogo.png"));
mail.Attachments.Add(new EmailAttachment(file.Name, file));
await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(mail);
Кроме того, отправка вложений работает хорошо только в случае встроенного почтового клиента Outlook UWP. Классический Outlook, скорее всего, вообще игнорирует вложения.
Если вам нужно встроить изображение, вам нужно будет воспользоваться службой электронной почты. Я могу порекомендовать SendGrid или MailGun. Оба имеют C # API, которые работают как на ладони. Они также бесплатны для ограниченного числа электронных писем.
Существует несколько способов вставить изображения в сообщение электронной почты в формате HTML.
Самый старый использует CID (Content ID), который вы использовали в своем вопросе.
Второй вариант - использование кодировки Base64. Сначала вы превращаете свое изображение в строку Base64. Об этом есть много учебных пособий, например, в этом посте . Затем вы можете просто вставить изображение в src
вашего <img>
тега:
<img src="data:image/jpeg;base64, YOURIMAGEINBASE64"/>
Наконец, вы можете встроить изображение, которое размещено где-то. Это лучше всего масштабируется, если вам нужно отправить электронное письмо многим получателям, но, конечно же, требуется фактически разместить изображение где-нибудь. Из трех методов он также поддерживается большинством клиентов.
Все три подхода подробно описаны в этом посте .