首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在电子邮件正文部分发送外部图像?

如何在电子邮件正文部分发送外部图像?
EN

Stack Overflow用户
提问于 2013-01-30 16:32:42
回答 3查看 1.6K关注 0票数 2

我想发送包含HTML contents with images的电子邮件。因此,任何在正文内容中发送外部图像的方法都不能作为附件。

我的图像位于我的项目的image文件夹下...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-30 16:42:41

为了简洁起见,我从XML文件中读取HTML,例如

代码语言:javascript
运行
复制
private MailMessage GetHtmlEmail()
{
    MailMessage mail = new MailMessage();
    XmlTextReader xReader = new XmlTextReader(Server.MapPath("~/ConfigFiles/Email.xml"));

    while (xReader.Read())
    {
        switch (xReader.Name)
        {
            case "ToAddress":
                mail.To.Add(xReader.ReadElementContentAs(typeof(string), null).ToString());
                break;
            case "FromAddress":
                mail.From = new MailAddress(xReader.ReadElementContentAs(typeof(string), null).ToString());
                break;
            case "Subject":
                mail.Subject = xReader.ReadElementContentAs(typeof(string), null).ToString();
                break;
            case "EmailBody":
                mail.Body = xReader.ReadElementContentAs(typeof(string), null).ToString();
                break;
            default:
                break;
        }
    }

    return mail;
}

和XML文件...

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8" ?>
<Email>
    <FromAddress>website@domain.co.uk</FromAddress>
    <ToAddress>to@domain.co.uk</ToAddress>
    <Subject>Contact us enquiry</Subject>
    <EmailBody>
        <![CDATA[
        <html>
           <head>
              <title>Customer Enquiry</title>
           </head>
            <div valign="top">
                <!-- center -->
                <font color="#666666" face="Arial, Helvetica, sans-serif, Verdana" size="2">
                  <p>You have recieved a new customer enquiry.</p>
                  <p><strong>Name: </strong>{0}<br />
                  <strong>Email: </strong>{1}<br />
                  <strong>Tel: </strong>{2}<br /></p>
                  <p><strong>Message: </strong>{3}</p>
                </font>
            </div>
          </html> 
      ]]>
    </EmailBody>
</Email>
票数 1
EN

Stack Overflow用户

发布于 2013-01-30 17:22:47

代码语言:javascript
运行
复制
Guid contentId = Guid.NewGuid().ToString();

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(
  "This is a image:<br /><img src=\"cid:" + contentId + "\" />", 
  null, "text/html");

ContentType ct = new ContentType(MediaTypeNames.Image.Jpeg);

LinkedResource embedded = new LinkedResource("c:\\image1.jpg", ct);
embedded.ContentId = contentId;
htmlView.LinkedResources.Add(embedded);

mail.AlternateViews.Add(altView);
SmtpClient client = new SmtpClient();
client.Send(mail);
票数 0
EN

Stack Overflow用户

发布于 2013-01-30 16:36:25

我可能会通过将图像存储在我的托管服务上,并使用一个普通的标签链接到它,其中src是指向它存储位置的链接。这样,只要你的主机没有宕机,你总是可以得到图像。

记住要确保电子邮件的HTML值设置为true,这样就不会有问题了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14599623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档