使用C#在电子邮件中发送嵌入Base64图像,以便通过Gmail解码

时间:2016-09-29 14:27:01

标签: c# asp.net base64 email-attachments

我正在尝试发送一封在邮件正文中嵌入图片的电子邮件。

图像编码为Base64字符串。内容如下:

"<p><span>My Name</span></p><img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA..." width=\"167\" height=\"167\" />"

此示例中已切断base64字符串。

我使用以下代码将html作为附件发送,但是,示例中的图像仍然被电子邮件提供商(gmail / outlook)拒绝解码。我不知道我是不是做得不好。

    string htmlBody = "<p><span>My Name</span></p><img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA..." width=\"167\" height=\"167\" />";

   AlternateView avHtml = AlternateView.CreateAlternateViewFromString
               (htmlBody, null, MediaTypeNames.Text.Html);


  var mailTo = Config.Debug ? new MailAddress(Config.DebugEmailAddress) : new MailAddress("myemail@gmail.com");
  var mailFrom = new MailAddress("myemail@gmail.com");
  var mailMessage = new MailMessage(mailFrom, mailTo) { Subject = "hola q tal", Body = "holaaa", IsBodyHtml = true };

  mailMessage.To.Add("myemail@gmail.com");

  mailMessage.AlternateViews.Add(avHtml);

 var sender1 = new SmtpClient
     {
         Host = Config.SmtpHost,
         Port = 25,
         Credentials = new NetworkCredential(Config.SmtpHostUserName, Config.SmtpHostPassword)
            };

      sender1.Send(mailMessage);

我很感激任何想法。

1 个答案:

答案 0 :(得分:0)

如果要将附件附加到您发送的邮件,则不是这样。您应该将附件添加到MailMessage

message.Attachments.Add(new Attachment(PathToAttachment));

如果您在base64中有附件,则应将其转换为Stream并使用适当的附件构造函数。

Attachment(Stream, ContentType)

Attachment class与他的所有建筑师的文章。