Отправить письмо с изображением встроенное - изображение не видно
Я отправляю электронное письмо с библиотекой С#. Тело письма содержит логотип. Когда я отправляю это письмо через SMTP-сервер GMail, изображение видно. Когда я использую наше доменное имя [email protected], изображение не видно.
Есть ли у кого-нибудь представление об этой разнице?
Ответы
Ответ 1
Для этого вам нужно отправить HTML-документ, а затем вставить изображение с помощью mime.
Объект smtp ASP.NET выполняет большую часть грязной работы для вас с версии 2.0.
Вот пример с сайта microsoft. исходное местоположение
//Holds message information.
System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
//Add basic information.
mailMessage.From = new System.Net.Mail.MailAddress(txtFrom.Text.Trim());
mailMessage.To.Add(txtTo.Text.Trim());
mailMessage.Subject = txtSubject.Text.Trim();
//Create two views, one text, one HTML.
System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim(), null, "text/plain");
System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim() + "<image src=cid:HDIImage>", null, "text/html");
//Add image to HTML version
System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(fileImage.PostedFile.FileName, "image/jpg");
imageResource.ContentId = "HDIImage";
htmlView.LinkedResources.Add(imageResource);
//Add two views to message.
mailMessage.AlternateViews.Add(plainTextView);
mailMessage.AlternateViews.Add(htmlView);
//Send message
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
smtpClient.Send(mailMessage);
Ответ 2
Вы хотите встроить изображение в почтовое сообщение.
и MailMessage Тип тела должен быть html
try
{
MailMessage mail = new MailMessage();
mail.To.Add("[email protected]");
mail.From = new MailAddress("[email protected]");
mail.Subject = "Test with Image";
string Body = "<b>Welcome</b><br><BR>Online resource for .net articles.<BR><img alt=\"\" hspace=0 src=\"cid:imageId\" align=baseline border=0 >";
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body, null, "text/html");
LinkedResource imagelink = new LinkedResource(Server.MapPath(".") + @"\codedigest.png", "image/png");
imagelink.ContentId = "imageId";
imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
htmlView.LinkedResources.Add(imagelink);
mail.AlternateViews.Add(htmlView);
SmtpClient smtp = new SmtpClient();
smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtp.Send(mail);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
Ответ 3
if (!string.IsNullOrEmpty(BodyImageFileFullName))
{
var leftImageLink = new LinkedResource(BodyImageFileFullName, "image/jpg")
{
ContentId = "ImageGM_left",
TransferEncoding = TransferEncoding.Base64
};
htmlView.LinkedResources.Add(leftImageLink);
}
Вы можете посмотреть это решение. Я решаю свою проблему с этим кодом. подробный код о отправке почты с изображением, связанным в теле.
http://www.softcodearticle.com/2012/11/sending-mail-with-image-using-smtp-in-c/
Ответ 4
Принимающий сайт или почтовый агент используют правила, частично основанные на отправителе, для блокировки изображений. Вы обнаружите, что ваши результаты различаются в зависимости от того, куда вы отправляете. Что вы можете сделать, это зависит от получателя - вы можете связаться с ними или просмотреть свои опубликованные политики, чтобы узнать, какие обручи вы могли бы перепрыгнуть, чтобы избежать блокировки.
Ответ 5
Следующий код решил мою проблему:
//Holds message information.
System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
//Add basic information.
mailMessage.From = new System.Net.Mail.MailAddress(txtFrom.Text.Trim());
mailMessage.To.Add(txtTo.Text.Trim());
mailMessage.Subject = txtSubject.Text.Trim();
//Create two views, one text, one HTML.
System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim(), null, "text/plain");
System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim() + "<image src=cid:HDIImage>", null, "text/html");
//Add image to HTML version
System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(fileImage.PostedFile.FileName);
imageResource.ContentId = "HDIImage";
htmlView.LinkedResources.Add(imageResource);
//Add two views to message.
mailMessage.AlternateViews.Add(plainTextView);
mailMessage.AlternateViews.Add(htmlView);
//Send message
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
smtpClient.Send(mailMessage);