zoukankan      html  css  js  c++  java
  • asp.net 调用SmtpClient发送邮件(转)

    转自:http://www.cnblogs.com/hunanboy/archive/2006/09/25/514073.html 

    因为系统发邮件的老不稳定,所以需要把以前的代码升级一下,打开以前代码发现用的是1.1

    版本的SmtpMail,系统开发用的是2005,MSDN上面则说明SmtpMail已经过时,而且通过资料和实

    践也表明SmtpMail容易丢失邮件。原因就是这个类只能单线程同步操作。
       2005里新引进SmtpClient类,属于System.Net.Mail命名空间下,2003里邮件操作类都是在

    System.Web和System.Web.Mail里,而2005全部引入到了System.Net和System.Net.Mail命名空间

    里了。


       由于大部分属性和方法的说明在MSDN上都可以找到,也有现成的例子,所以我在这里不做过多的赘述。在这里只通过一个最简单的例子讨论一下最基本的属性和方法。
       MSDN上写到,要使用SmtpClient进行邮件操作,需要指定MailMessage的From,To,Subject,Body等基本属性.
       From:通俗点说法就是发邮件的
       To:通俗点说就是发给谁
       Subject:指邮件主题
       Body:邮件内容
    SmtpClient通过邮件服务器进行邮件操作肯定要牵涉到邮件服务器的端口,服务器,验证等操作,在此我推荐我认为在2005最简单和方便的操作方式,在2005里的配置文件里新加入了一些节点
    我们的SmtpClient的这些服务器属性就可以通过以下形式而指定

      <system.net>
        
    <mailSettings>
          
    <smtp>
            
    <network host="smtp.***.cn" port="25" userName="liuronghua" password="test"/>
          
    </smtp>
        
    </mailSettings>
      
    </system.net>

    host :邮件服务器地址
    port:端口
    userName:用户
    password:密码

    如此指定之后,在SmtpClient的Send方法里就会自动去匹配这些属性了。非常方便。
    好,指定好这一步了,咱们的邮件发送就变的too Simple了。
    请看以下代码

     1public bool sendMail()
     2{
     3   //建立邮件信息,直接写入构造函数,依次为From,To,Subject,Body
     4   MailMessage message = new MailMessage("liuronghua@test.cn",
     5           "tansheng719@163.com",        
     6           "测试邮件",
     7           "测试邮件,测试邮件");
     8   SmtpClient client = new SmtpClient();
     9   client.Send(message);
    10}


    三行代码,就搞定邮件发送,是不是非常简单?呵呵。另外SmtpClient的一些其他的用法如发送附件、异步调用在此就不说了。因为这是最基本的说明文章,有兴趣学习的朋友可以去查阅MSDN。

    依照此例写一个方法用于发送

    public static void SendMail(string strSmtpServer, string UserName, string Password, string strFrom, string strTo, string strSubject, string strBody, string strFileName)
            {
                
    //生成一个   使用SMTP发送邮件的客户端对象 
                System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(strSmtpServer);

                
    //表示以当前登录用户的默认凭据进行身份验证,不写依然能发送
                
    //client.UseDefaultCredentials = true;

                
    //包含用户名和密码 
                client.Credentials = new System.Net.NetworkCredential(UserName, Password);

                
    //指定如何发送电子邮件。 
                
    //Network                                             电子邮件通过网络发送到   SMTP   服务器。     
                
    //PickupDirectoryFromIis               将电子邮件复制到挑选目录,然后通过本地   Internet   信息服务   (IIS)   传送。     
                
    //SpecifiedPickupDirectory           将电子邮件复制到   SmtpClient.PickupDirectoryLocation   属性指定的目录,然后由外部应用程序传送。     

                client.DeliveryMethod 
    = System.Net.Mail.SmtpDeliveryMethod.Network;

                
    //建立邮件对象   
                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(strFrom, strTo, strSubject, strBody);

                
    //定义邮件正文,主题的编码方式 
                message.BodyEncoding = System.Text.Encoding.UTF8;
                message.SubjectEncoding 
    = System.Text.Encoding.UTF8;

                
    //获取或设置一个值,该值指示电子邮件正文是否为   HTML。   
                message.IsBodyHtml = true;            
               
                
    //指定邮件优先级 

                message.Priority 
    = System.Net.Mail.MailPriority.Normal;

                
    //添加附件 
                
    //System.Web.Mail.MailAttachment   mailAttachment=new   System.Web.Mail.MailAttachment(@ "f:/baihe.txt ");   
                if (strFileName != " " && strFileName != null)
                {
                    Attachment data 
    = new Attachment(strFileName);
                    message.Attachments.Add(data);
                }


                
    //发件人身份验证,否则163   发不了 
                client.Credentials = new System.Net.NetworkCredential(strFrom, Password);


                
    //发送 
                client.Send(message);
            }


     

  • 相关阅读:
    ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项
    Oracle10g在Win2008R2下因版本无法安装问题的解决
    oracle 表被锁了解决方案
    用shell获得hadoop中mapreduce任务运行结果的状态
    发现一个c++ vector sort的bug
    跳青蛙问题与变态跳青蛙问题
    关于const *和 * const
    格雷码的计算(转)
    不安装oracle客户端,如何运行sqlplus
    Sqoop 将hdfs上的文件导入到oracle中,关于date类型的问题
  • 原文地址:https://www.cnblogs.com/millen/p/1978559.html
Copyright © 2011-2022 走看看