gpt4 book ai didi

c# - Base 64 图像未在电子邮件中呈现

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:17 24 4
gpt4 key购买 nike

我下面的代码有什么问题。我正在尝试将内联图像放入电子邮件中。

public string SendEmail(SendEmail emailDetails)
{
var x =
"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";

var imageData = Convert.FromBase64String(x);
var contentId = Guid.NewGuid().ToString();
var linkedResource = new LinkedResource(new MemoryStream(imageData), "image/jpeg")
{
ContentId = contentId,
TransferEncoding = TransferEncoding.Base64
};

var msg = string.Format("<p><label> Visitor's Name: {0}</lebel></p> " +
"<p><label> Person to Visit: {1} </lebel> </p>" +
"<p><label> Department Name: {2} </lebel> </p>" +
"<p><label> Schedule: {3} </lebel></p>" +
"<div>Present this image to the security guard <br /><img src=\"cid:{4}\" /></div>",
emailDetails.VisitorName, emailDetails.PersonToVisit, emailDetails.DepartmentName,
emailDetails.Schedule, contentId);

string result;
try
{
var htmlView = AlternateView.CreateAlternateViewFromString(msg, null, "text/html");
htmlView.LinkedResources.Add(linkedResource);

var mail = new MailMessage();
var smtpServer = new SmtpClient("smtp.gmail.com");

mail.From = new MailAddress("somename@gmail.com");
mail.To.Add(emailDetails.EmailUsed);
mail.Subject = "Itinerary Gate Pass";
mail.Body = msg;
//mail.IsBodyHtml = true;

smtpServer.Port = 587;
smtpServer.Credentials = new NetworkCredential("somename@sommail.com", "soemthing");
smtpServer.EnableSsl = true;

smtpServer.Send(mail);
result = "Message was sent";
}
catch (Exception )
{
result = "Failed sending Email";
}
return result;
}

如果我在 mail.Body = msg; 中放置一个断点并将“msg”的值复制到“plnkr”中,我将获得带图像的格式化 html。你能告诉我怎么做吗?谢谢。

最佳答案

电子邮件客户端不会显示 base 64 图像。

您要么必须通过将 src 设置为可通过 Internet 访问的在线图像来显示图像

例如

<img src="http://someurl/someimage.jpg" />

否则您必须附上图片并将src设置为

<img src="cid:[The name of the image you attached]" />

因此,如果您说例如在电子邮件中添加了一个名为 logo.jpg 的附件,您将执行如下操作

<img src="cid:logo" />

采用第二种方法时需要考虑的一个重要因素是某些电子邮件客户端会缓存图像,这可能会导致显示错误图像的问题。我建议您使用方法一。

如果您不想将文件保存到硬盘,则需要将 base 64 字符串转换为字节数组,然后用于创建附件对象,例如

var bytes = Convert.FromBase64String(x);

现在您可以创建附件了

mail.Attachments.Add(New Attachment(New MemoryStream(bytes),attachmentName))

关于c# - Base 64 图像未在电子邮件中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48577602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com