zoukankan      html  css  js  c++  java
  • C#邮件发送(最坑爹的邮箱-QQ邮箱)---转发(SmallFlyElephant)

    C#邮件发送(最坑爹的邮箱-QQ邮箱)

    最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星期幡然悔悟,代码才是我的最爱,做点小东西,就写个邮件发送程序。说的邮件发送相信工作过基本上都会用到过,用户注册完之后发个验证邮件过去验证一下,改密码的时候邮箱验证一下,用户对网站体验如何发个邮件调查一下,网站最近最热的内容发个邮件推送一下,好吧,有点啰嗦。正文开始吧:

    SMTP定义

    简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传输email的标准。

    SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。

    (摘自维基百科)

    简单的邮件发送程序

    网上很多各种邮箱的发送程序,通常情况就是Gmail邮箱(比较小众,程序员比较喜欢),网易邮箱(吐槽跟帖的最爱,还有只看不说的我),新浪邮箱(之前工作需要和新浪做接口,注册了一个,现在已经沦为卖货聚集地),QQ邮箱(用户最多,分布最广,且最坑爹的邮箱),常用的邮箱大概就是这几种,网上也有相应的程序,大多数写的比较乱,有个哥们写了一个邮箱类,原创者也不知道是谁,没弄过的可以先用这个类练个手~

    复制代码
      1  public class Email
      2         {
      3             /// <summary>
      4             /// 发送者
      5             /// </summary>
      6             public string mailFrom { get; set; }
      7 
      8             /// <summary>
      9             /// 收件人
     10             /// </summary>
     11             public string[] mailToArray { get; set; }
     12 
     13             /// <summary>
     14             /// 抄送
     15             /// </summary>
     16             public string[] mailCcArray { get; set; }
     17 
     18             /// <summary>
     19             /// 标题
     20             /// </summary>
     21             public string mailSubject { get; set; }
     22 
     23             /// <summary>
     24             /// 正文
     25             /// </summary>
     26             public string mailBody { get; set; }
     27 
     28             /// <summary>
     29             /// 发件人密码
     30             /// </summary>
     31             public string mailPwd { get; set; }
     32 
     33             /// <summary>
     34             /// SMTP邮件服务器
     35             /// </summary>
     36             public string host { get; set; }
     37 
     38             /// <summary>
     39             /// 正文是否是html格式
     40             /// </summary>
     41             public bool isbodyHtml { get; set; }
     42 
     43             /// <summary>
     44             /// 附件
     45             /// </summary>
     46             public string[] attachmentsPath { get; set; }
     47 
     48             public bool Send()
     49             {
     50                 //使用指定的邮件地址初始化MailAddress实例
     51                 MailAddress maddr = new MailAddress(mailFrom);
     52                 //初始化MailMessage实例
     53                 MailMessage myMail = new MailMessage();
     54 
     55 
     56                 //向收件人地址集合添加邮件地址
     57                 if (mailToArray != null)
     58                 {
     59                     for (int i = 0; i < mailToArray.Length; i++)
     60                     {
     61                         myMail.To.Add(mailToArray[i].ToString());
     62                     }
     63                 }
     64 
     65                 //向抄送收件人地址集合添加邮件地址
     66                 if (mailCcArray != null)
     67                 {
     68                     for (int i = 0; i < mailCcArray.Length; i++)
     69                     {
     70                         myMail.CC.Add(mailCcArray[i].ToString());
     71                     }
     72                 }
     73                 //发件人地址
     74                 myMail.From = maddr;
     75 
     76                 //电子邮件的标题
     77                 myMail.Subject = mailSubject;
     78 
     79                 //电子邮件的主题内容使用的编码
     80                 myMail.SubjectEncoding = Encoding.UTF8;
     81 
     82                 //电子邮件正文
     83                 myMail.Body = mailBody;
     84 
     85                 //电子邮件正文的编码
     86                 myMail.BodyEncoding = Encoding.Default;
     87 
     88                 myMail.Priority = MailPriority.High;
     89 
     90                 myMail.IsBodyHtml = isbodyHtml;
     91 
     92                 //在有附件的情况下添加附件
     93                 try
     94                 {
     95                     if (attachmentsPath != null && attachmentsPath.Length > 0)
     96                     {
     97                         Attachment attachFile = null;
     98                         foreach (string path in attachmentsPath)
     99                         {
    100                             attachFile = new Attachment(path);
    101                             myMail.Attachments.Add(attachFile);
    102                         }
    103                     }
    104                 }
    105                 catch (Exception err)
    106                 {
    107                     throw new Exception("在添加附件时有错误:" + err);
    108                 }
    109 
    110                 SmtpClient smtp = new SmtpClient();
    111                 //指定发件人的邮件地址和密码以验证发件人身份
    112                 smtp.Credentials = new System.Net.NetworkCredential(mailFrom, mailPwd);
    113                 smtp.UseDefaultCredentials = true;
    114                 smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    115                 //设置SMTP邮件服务器
    116                 smtp.Host = host;
    117                 // smtp.EnableSsl = true;
    118                 //smtp.Port = 587;
    119                 try
    120                 {
    121                     //将邮件发送到SMTP邮件服务器
    122                     smtp.Send(myMail);
    123                     return true;
    124 
    125                 }
    126                 catch (System.Net.Mail.SmtpException ex)
    127                 {
    128                     return false;
    129                 }
    130 
    131             }
    132         }
    复制代码

    上面是一个发送邮件的辅助类,功能非常全,基本上不用动手改程序:

    先写个控制台测试一下程序,发送是成功的,结果就不截图了,如果写到这里都算是博客,我还不如去听首歌,看官有兴趣看下面的吧.

    复制代码
     1             Email email = new Email();
     2             email.mailFrom = "myEmail@163.com";
     3             email.mailPwd = "myPassword";
     4             email.mailSubject = "程序员的生活";
     5             email.mailBody = "很多程序员的其实非常艰苦的一个事情";
     6             email.isbodyHtml = true;    
     7             email.host = "smtp.163.com";
     8             email.mailToArray = new string[] { "XX@xx.com", "XX@xx.cn" };
     9             email.mailCcArray = new string[] {"XX@xx.com" };
    10             email.attachmentsPath = new string[] { };
    11             if (email.Send())
    12             {
    13                 Console.WriteLine("邮件发送成功~");
    14                 Console.ReadKey();
    15             }
    16             else
    17             {
    18                 Console.WriteLine("邮件发送失败~");
    19                 Console.ReadKey();
    20             }
    复制代码

    同样的起点不同的命运

    1.网易邮箱,不需要丝毫的改动,这一点还是给网易邮箱一个赞;

    2.Gmail邮箱,需要改的地方,设置SSL是否加密,设置Port端口, SmtpClient smtp = new SmtpClient("XX@gmail.com");smtp.EnableSsl = true;smtp.Port = 587;设置一下就过关,可以接受.

    3.新浪邮箱,卖货的广告,各种坑爹微博,页面做的是如此的糟糕,简直让人恍然间回到十几年前,新浪慢慢的把自己沦为二三流公司,也是需要设置一下,不过不是设置程序,需要去发送者邮箱设置,如果我不说大家知道是我红色的那块打开设置区吗?讲SMTP服务开启可以发送邮件~

    4.QQ邮箱,人最多的邮箱不一定是最好的,QQ需要设置端口,而且需要去邮箱中设置:

    http://service.mail.qq.com/cgi-bin/help?subtype=1&no=167&id=28

  • 相关阅读:
    UVa 1354 天平难题 (枚举二叉树)
    广西邀请赛总结
    UVa 12118 检查员的难题 (dfs判连通, 构造欧拉通路)
    UVA
    Uva 127 "Accordian" Patience (模拟)
    UVA 10539 Almost Prime Numbers( 素数因子)
    HDU 1272 小希的迷宫(并查集)
    HDU 1213 How Many Tables (并查集)
    POJ 2236 Wireless Network(并查集)
    HDU 1233 还是畅通工程 ( Kruskal或Prim)
  • 原文地址:https://www.cnblogs.com/ypfnet/p/3744889.html
Copyright © 2011-2022 走看看