zoukankan      html  css  js  c++  java
  • .NET(C#):使用SmtpClient发送带有图片和附件的电子邮件

    第一次使用这种方式发邮件呵呵,就比如拿我的Live邮箱往QQ邮箱上发一封邮件。

    使用SmtpClient发送邮件的步骤就不讲了,在网上你可以找到太多的资料了,这里说一些需要注意的地方:

    如果邮件的内容是HTML,设置MailMessage.IsBodyHtml为True,这样邮件才能够被正确以HTML形式读取。

    在HTML中引用资源使用cid:xxx,xxx是附件的ContentId属性。同时也可以在MailMessage中的AlternateViews中加入AlternateView来指定电子邮件内容的不同格式。通过AlternativeView的LinkedResources来加入引用文件。引用也是通过LinkedResource的ContentId来设置的。事实上这个ContentId属性是来自AttachmentBase类型,而Attachment,AlternateView和LinkedResource类型都继承与这个类:

    image

    另外邮件的内容,主题,地址名称如果包含某些非ASCII字符的话应该指定一个编码,因为默认编码是ASCII。

    最后某些SMTP服务器可能不支持SSL传输,因此SmtpClient的EnableSsl只能为false(否则会有异常抛出)。

    代码:

    using System;

    using System.Text;

    using System.Net;

    using System.Net.Mime;

    using System.Net.Mail;

    namespace Mgen

    {

    class Program

    {

    static void Main()

    {

    //代码中的某些信息(如邮箱和密码)已用xxx代替,因此如果编译代码,请先替换成有效的数据!

    using (var smtp = new SmtpClient())

    using (var mail = new MailMessage("xxx@live.com", "xxx@qq.com"))

    {

    //图像附件

    var attach = new Attachment(@"D:\a.jpg", MediaTypeNames.Image.Jpeg);

    //设置ContentId

    attach.ContentId = "pic";

    //ZIP附件

    var attach2 = new Attachment(@"D:\b.zip", "application/x-zip-compressed");

    mail.Attachments.Add(attach);

    mail.Attachments.Add(attach2);

    //标题和内容,注意设置编码,因为默认编码是ASCII

    mail.Subject = "你好";

    mail.SubjectEncoding = Encoding.UTF8;

    //HTML内容

    mail.Body = "<img src=\"cid:pic\"/><p>来自Mgen。</p>";

    mail.BodyEncoding = Encoding.UTF8;

    //指示改电子邮件内容是HTML格式

    mail.IsBodyHtml = true;

    //SMTP设置(根据邮箱类型设置,这里是Live Mail的SMTP服务器地址)

    smtp.Host = "smtp.live.com";

    smtp.UseDefaultCredentials = false;

    //某些SMTP服务器可能不支持SSL,会抛出异常

    smtp.EnableSsl = true;

    smtp.Credentials = new NetworkCredential("xxx@live.com", "xxx");

    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

    //发送

    smtp.Send(mail);

    }

    }

    }

    }

    最后在QQ邮箱中浏览接收到的邮件:

    image

    E-MAIL:yiwuya@hotmail.com
    MSN:yiwuya@hotmail.com
    QQ:304899972
    纺织软件
  • 相关阅读:
    spring mvc controller间跳转 重定向 传参
    SpringMVC拦截器(资源和权限管理)
    Spring3 MVC 拦截器拦截不到的问题
    使用HandlerInterceptor实现简单的授权
    同一个form里,不管哪个 submit 都是直接提交form表单里的内容
    AJax+springMVC+JQURY.GET--注册界面即时刷新用户名是否存在
    Ajax异步检查用户名是否存在(附Demo下载)
    Ajax注册表单用户名实时验证
    SpringMVC记住密码功能(实例)
    CocoaPods停在Analyzing dependencies解决方案
  • 原文地址:https://www.cnblogs.com/yiwuya/p/3018794.html
Copyright © 2011-2022 走看看