簡體   English   中英

有什么方法可以在UWP中發送帶有嵌入式圖像的HTML電子郵件

[英]Is there any way to send HTML e-mail with embedded image in UWP

我正在使用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(Exception ep){popUpMsgs.popup(String.Format(“無法發送電子郵件,出現以下錯誤:{0}”,ep.Message)); }

內置電子郵件API僅支持以Docs狀態發送純文本電子郵件:

此方法僅發送純文本消息。 您不能將郵件正文設置為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字符串。 有很多關於此的教程,例如在本博客文章中 然后,您可以將圖像嵌入<img>標簽的src中:

<img src="data:image/jpeg;base64, YOURIMAGEINBASE64"/>

最后,您可以嵌入托管在某處的圖像。 如果您需要將電子郵件發送給許多收件人,這將最佳縮放,但是當然需要將圖像實際托管在某個地方。 在這三種方法中,大多數客戶端也支持該方法。

這篇文章詳細描述了這三種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM