我正在使用uwp应用程序发送带有嵌入式图像的html电子邮件。我正在使用EASendMail nuget pakage,经过一段时间后,我的应用程序显示了错误:
连接尝试失败是因为连接方在一段时间后没有正确响应,或者已建立的连接失败是因为连接主机未能响应。(HRESULT例外: 0x8007274c)
我想试用期已经过了,我该怎么办?
使用EASendMailRT;https://www.emailarchitect.net/easendmail/kb/csharp.aspx?cat=8
我找不到其他的选择
try
{
string ToAddress = MailSendPage.toAddressTxtBox;
string Subject = MailSendPage.subjectTxtBox;
SmtpMail oMail = new SmtpMail("TryIt");
oMail.From = new MailAddress(username);
if(!String.IsNullOrEmpty(ToAddress)&& !String.IsNullOrEmpty(Subject))
{
oMail.To.Add(new MailAddress(ToAddress));
oMail.Subject = Subject;
EASendMailRT.SmtpClient oSmtp = new EASendMailRT.SmtpClient();
SmtpServer oServer = new SmtpServer(host);
oServer.User = username;
oServer.Password = password;
oServer.Port = port;
if (IsStackPanalHasImg() == true)
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
string[] files = Directory.GetFiles(localFolder.Path + @"\ProjectImages");
foreach (string eachfile in files)
{
foreach (string name in covertToHtml.ControlName)
{
string pattern = string.Format("{0}.jpeg", name);
if (Regex.IsMatch(eachfile, pattern))
{
Attachment oAttachment = await oMail.AddAttachmentAsync(eachfile);
oAttachment.ContentID = name;
}
}
}
}
await oSmtp.SendMailAsync(oServer, oMail);
popUpMsgs.popup(" The Mail has been sent");
}
} catch (异常ep) {popUpMsgs.popup(String.Format(“未能发送以下错误的电子邮件:{0}",ep.Message));}
发布于 2019-01-24 02:02:36
内置的电子邮件API只支持以文档状态发送纯文本电子邮件:
此方法只发送纯文本消息。您不能将消息正文设置为HTML格式。
您可以做的是将图像附加到电子邮件中:
EmailMessage mail = new EmailMessage();
mail.Sender = new EmailRecipient("test@example.com");
mail.To.Add(new EmailRecipient("someone@example.com"));
mail.Subject = "Hello";
mail.Body = "World";
var file = await StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///Assets/StoreLogo.png"));
mail.Attachments.Add(new EmailAttachment(file.Name, file));
await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(mail);
此外,只有在内置的UWP Outlook Mail客户端中,发送附件才能正常工作。经典Outlook很可能会完全忽略附件。
如果您需要嵌入图像,则需要使用电子邮件服务。我可以推荐SendGrid或MailGun。两者都有C# API,它们可以轻而易举地工作。他们也是免费的数量有限的电子邮件。
有几种方法可以将图像嵌入到HTML电子邮件中。
最古老的是使用CID (内容ID),这是您在提问中使用的。
第二个选项是使用Base64编码。首先将图像转换为Base64字符串。这方面有许多教程,例如在这个博客中。然后,您可以将图像嵌入到src
的<img>
标记中:
<img src="data:image/jpeg;base64, YOURIMAGEINBASE64"/>
最后,您可以嵌入一个托管在某处的图像。这是最好的,如果你需要发送电子邮件给许多收件人,但当然,实际上需要托管图像的某个地方。在这三种方法中,大多数客户端也支持它。
这三种方法在本帖子中都有详细的描述。
https://stackoverflow.com/questions/54341492
复制