【问题标题】:How to send HTML-formatted email? [duplicate]如何发送 HTML 格式的电子邮件? [复制]
【发布时间】:2012-01-27 13:24:51
【问题描述】:

我可以让 Web 应用程序使用 Windows 任务计划程序自动发送电子邮件。现在我想使用我为发送电子邮件而编写的以下方法发送 HTML 格式的电子邮件。

我的代码隐藏:

protected void Page_Load(object sender, EventArgs e)
    {
        SmtpClient sc = new SmtpClient("mail address");
        MailMessage msg = null;

        try
        {
            msg = new MailMessage("xxxx@gmail.com",
                "yyyy@gmail.com", "Message from PSSP System",
                "This email sent by the PSSP system");

             sc.Send(msg);
        }

        catch (Exception ex)
        {
            throw ex;
        }

        finally
        {
            if (msg != null)
            {
                msg.Dispose();
            }
        }
    }

如何做到这一点?我只想在电子邮件中添加一些带有一个链接和一张图片的粗体文本。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    isBodyHtml 设置为true 允许您在邮件正文中使用HTML 标记:

    msg = new MailMessage("xxxx@gmail.com",
                    "yyyy@gmail.com", "Message from PSSP System",
                    "This email sent by the PSSP system<br />" +
                    "<b>this is bold text!</b>");
    
    msg.IsBodyHtml = true;
    

    【讨论】:

    • 我们可以使用自定义字体吗??
    • 您不能轻易自定义字体,因为自定义字体需要邮件客户端支持。许多邮件客户端仍然使用非常基本的 IE6 之前的 HTML 类型,因此它们将默认使用另一种字体。
    • 所以我不需要使用 标签?
    • 所以如果我想在邮件主题中添加 html,可以吗?在主题中,我需要在此请求中以粗体格式显示,例如 [Action Neede]
    【解决方案2】:

    这对我有用

    msg.BodyFormat = MailFormat.Html;
    

    然后你就可以在你的body中使用html了

    msg.Body = "<em>It's great to use HTML in mail!!</em>"
    

    【讨论】:

    【解决方案3】:

    发送 html 格式电子邮件的最佳方式

    此代码将在“Customer.htm”中

        <table>
        <tr>
            <td>
                Dealer's Company Name
            </td>
            <td>
                :
            </td>
            <td>
                #DealerCompanyName#
            </td>
        </tr>
    </table>
    

    使用 System.IO.File.ReadAllText 读取 HTML 文件。获取字符串变量中的所有 HTML 代码。

    string Body = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("EmailTemplates/Customer.htm"));
    

    将特定字符串替换为您的自定义值。

    Body = Body.Replace("#DealerCompanyName#", _lstGetDealerRoleAndContactInfoByCompanyIDResult[0].CompanyName);
    

    调用 SendEmail(string Body) 函数并执行发送电子邮件的过程。

     public static void SendEmail(string Body)
            {
                MailMessage message = new MailMessage();
                message.From = new MailAddress(Session["Email"].Tostring());
                message.To.Add(ConfigurationSettings.AppSettings["RequesEmail"].ToString());
                message.Subject = "Request from " + SessionFactory.CurrentCompany.CompanyName + " to add a new supplier";
                message.IsBodyHtml = true;
                message.Body = Body;
    
                SmtpClient smtpClient = new SmtpClient();
                smtpClient.UseDefaultCredentials = true;
    
                smtpClient.Host = ConfigurationSettings.AppSettings["SMTP"].ToString();
                smtpClient.Port = Convert.ToInt32(ConfigurationSettings.AppSettings["PORT"].ToString());
                smtpClient.EnableSsl = true;
                smtpClient.Credentials = new System.Net.NetworkCredential(ConfigurationSettings.AppSettings["USERNAME"].ToString(), ConfigurationSettings.AppSettings["PASSWORD"].ToString());
                smtpClient.Send(message);
            }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2010-11-26
    • 2014-06-22
    相关资源
    最近更新 更多