Как прикрепить несколько изображений в теле письма в приложении 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.

Другие вопросы по тегам