Как прикрепить несколько изображений в теле письма в приложении Windows?
Я работаю над приложением Windows для отправки электронной почты. Для форматирования текста я использовал редактор tinymce для тела письма.
Использовал функцию вставки изображения tinymce для добавления изображения в тело письма, но при отправке письма пользователю. Изображения не отображаются в теле письма пользователя.
Затем я попытался добавить изображение base64 вручную, как показано ниже:
<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAABLCAYAAABk6PuLAAAACXBIWXMAASdHAAEnRwEEDs /'>
Который не смог загрузить изображения.
Можем ли мы использовать связанные ресурсы и альтернативное представление в крошечном mce?
Как загрузить изображения в тело письма?
4 ответа
Tiny MCE - это всего лишь редактор HTML, а не инструмент, который можно использовать для создания альтернативных представлений для электронной почты.
Более того, все почтовые клиенты не поддерживают встроенные изображения (с данными URL).
Альтернативный просмотр - это единственный способ гарантировать, что все почтовые клиенты смогут отображать ваш контент в намеченном порядке.
Создайте словарь связанных ресурсов:
Dictionary<string, byte[]> linkedResources = new Dictionary<string, byte[]>();
linkedResources.Add("img1", byte[]);
Создайте общий метод отправки электронной почты:
public bool SendEmail(Dictionary<string, byte[]> linkedResources)
{
using (SmtpClient mailSender = new SmtpClient("SmtpHost", 22))
{
MailMessage emailMessage = new MailMessage()
{
Subject = "Subject",
SubjectEncoding = Encoding.ASCII,
IsBodyHtml = true,
Body = "Message",
BodyEncoding = Encoding.ASCII,
From = new MailAddress("Sender@domain.com")
};
emailMessage.BodyEncoding = Encoding.ASCII;
emailMessage.IsBodyHtml = true;
AlternateView av = AlternateView.CreateAlternateViewFromString(emailMessage.Body, null, MediaTypeNames.Text.Html);
foreach (var item in linkedResources)
{
MemoryStream streamBitmap = new MemoryStream(item.Value);
var linkedResource = new LinkedResource(streamBitmap, MediaTypeNames.Image.Jpeg);
linkedResource.ContentId = item.Key;
av.LinkedResources.Add(linkedResource);
}
emailMessage.AlternateViews.Add(av);
mailSender.Send(emailMessage);
return true;
}
}
Реальный вопрос, на который вам нужно ответить, это "как лучше всего вставить изображение в электронное письмо". Это очень широкая тема, на которую много раз отвечали - небольшое исследование должно привести вас к наиболее распространенным подходам и их плюсам / минусам:
https://sendgrid.com/blog/embedding-images-emails-facts/ https://www.campaignmonitor.com/blog/how-to/2008/08/embedding-images-in-email/ https://www.quora.com/Whats-the-best-practices-for-embedding-images-into-HTML-emails
Лучшего решения для этого нет, вы можете вставлять изображения или прикреплять их в виде файлов или просто отправлять их в виде ссылок.
это зависит от ваших требований. он фактически создает теги изображений и связывает их с моим сервером, чтобы получить больше аналитики, например, пользователь открыл электронную почту, загрузив изображение, бросив обработчик, и обработчик получает журналы, когда пользователь открыл электронную почту, и я могу знать, сколько пользователей открыло эту электронную почту. и так далее.
Сетка отправки отлично подходит для отправки электронных писем и получения аналитики из них, потому что она отслеживает практически все, что связано с вашей электронной почтой, и вы должны использовать сетку отправки, чтобы избежать спам-фильтров
По моему опыту, единственный способ решить эту проблему - сохранить это изображение на сервере, где оно является общедоступным, а затем указать атрибут img тега src на этот URL-адрес. Вы должны понимать, что HTML, используемый в электронной почте, строго ограничен обычным HTML.