zoukankan      html  css  js  c++  java
  • 老话题之C#写邮件发送

             唉!近来特么QQ邮件也犯二,突然间以前写的代码邮件发不出去,各种报错,无奈之下,换成了@163.com,可是报错依然,该开通(POP3/SMTP/IMAP)的都开通了!我勒了个草,像是在玩哥一样,还好哥不以为然,不然还真不知道和谁过不去。

              闲话少叙,言归正传,本次以@163.com为例,来给自己写一份记录事迹,各大邮件商可谓煞费苦心,想收你钱那,唉!从注册开始吧!

              当你注册一个@163.com邮箱时,要开通POP3/SMTP/IMAP就必须设置【授权码】,但有了这授权码这类设置得授权了才能用,但是为了能让C#程序通过163服务器发出邮件,那你还得把你的邮箱密码改成【授权码】一样,不然就发不出去(原因本人不明,知道的同学请赐教,不胜感激,但经过结论试验得出!)!

           接下来就是上代码

           先看我的配置文件

          

        <add key="sendEmail" value="13066802098@163.com,lei12345678,smtp.163.com,测试邮件"/>
        <add key="sendContext" value="您好!欢迎来到XXX网,您的注册验证码是{0},有效期10分钟,过期无效!谢谢"/>
      </appSettings>

          然后上后台代码

            /// <summary>
            /// 发送邮件的方法
            /// </summary>
            /// <param name="context">邮件内容中要替换的变化部份</param>
            /// <param name="toEmail">发送给XXXX的Email(也叫接收者的邮件地址)</param>
            /// <returns></returns>
            public static string SendEmail(string context, string toEmail)
            {
                //if (mailToArray == null || mailToArray.Length == 0) return "发送失败,收件人为空!";
                //"sender,pwd,serverHost(服务器地址smtp.qq.com),Port(端口号),subject(主题)"
                string emailSetting = ConfigurationManager.AppSettings["sendEmail"].ToString();
                string settingContent = ConfigurationManager.AppSettings["sendContext"].ToString(); // 格式为:"您好!您……………………{0}……"
                context = string.Format(settingContent, context);   // 格式化上面的要变{0}的内容 如果发的是不变的内容就不要该代码
                if (string.IsNullOrEmpty(emailSetting)) return "配置错误";
                string[] arr = emailSetting.Split(',');
                if (arr.Length != 4) return "配置错误";
                string sender = arr[0];     // 发送人邮件地址
                string password = arr[1];   // 发送人邮件PWD
                string Server = arr[2];    // 发送人邮件服务器地址
                //int Port=0;
                //if (!int.TryParse(arr[3], out Port)) return "邮件服务器端口号配置错误";      // 发送人邮件服务器地址端口号可以不写
                string Subject = arr[3];    // 邮件主题
                //使用指定的邮件地址初始化MailAddress实例
                MailAddress maddr = new MailAddress(sender,"雷先生");  // 这里第二个参数可以写成你想显示的!
                //初始化MailMessage实例
                MailMessage myMail = new MailMessage();
                //向收件人地址集合添加邮件地址
                //if (mailToArray != null)
                //{
                //    for (int i = 0; i < mailToArray.Length; i++)
                //    {
                //        myMail.To.Add(mailToArray[i].ToString());
                //    }
                //}
                myMail.To.Add(toEmail);     // 如果用批量 注释这一行,用上面的for添加邮件地址
                //向抄送收件人地址集合添加邮件地址
                //if (mailCcArray != null)
                //{
                //    for (int i = 0; i < mailCcArray.Length; i++)
                //    {
                //        myMail.CC.Add(mailCcArray[i].ToString());
                //    }
                //}
                myMail.CC.Add(toEmail);    // 如果用批量 注释这一行,用上面的for添加抄送邮件地址
                //发件人地址
                myMail.From = maddr;
                //电子邮件的标题
                myMail.Subject = Subject;
                //电子邮件的主题内容使用的编码
                myMail.SubjectEncoding = Encoding.UTF8;
                //电子邮件正文
                myMail.Body = context;
                //电子邮件正文的编码
                myMail.BodyEncoding = Encoding.Default;
                myMail.Priority = MailPriority.High;
                myMail.IsBodyHtml = true;
                //在有附件的情况下添加附件
                // try
                // {
                //     if (attachmentsPath != null && attachmentsPath.Length > 0)
                //     {
                //         Attachment attachFile = null;
                //         foreach (string path in attachmentsPath)
                //         {
                //            attachFile = new Attachment(path);
                //            myMail.Attachments.Add(attachFile);
                //        }
                //      }
                //}
                //catch (Exception err)
                //{
                //   throw new Exception("在添加附件时有错误:" + err);
                //}
                SmtpClient smtp = new SmtpClient();
                //指定发件人的邮件地址和密码以验证发件人身份
                smtp.Credentials = new NetworkCredential(sender, password);
                //smtp.UseDefaultCredentials = true;这句不要,否则发不出,一定要注意!!!!!!!!!!!!!!!!!!!!!!!!!
                smtp.EnableSsl = true;
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;                 //设置SMTP邮件服务器
                smtp.Host = Server;
                // smtp.EnableSsl = true;
                //smtp.Port = 587;
                try
                {
                    //将邮件发送到SMTP邮件服务器
                    smtp.Send(myMail);
                    return "成功";
                }
                catch (System.Net.Mail.SmtpException ex)
                {
                    return "失败";
                }
    
            }

        KO,就这样,可以根据需要改动!

  • 相关阅读:
    How to setup SLF4J and LOGBack in a web app
    Java Web services: WS-Security with Metro--referenc
    SOAP 及其安全控制--转载
    SQL 四种连接:内连接、左外连接、右外连接、全连接--转载
    Redis的安装、配置 --转载
    mysql中不同事务隔离级别下数据的显示效果--转载
    How to Map Distinct Value Types Using Java Generics--reference
    Spring(AbstractRoutingDataSource)实现动态数据源切换--转载
    springMVC项目在jboss7中配置应用自己的log4j--转载
    2017各银行贷款利息表及P2P平台贷款利率比较
  • 原文地址:https://www.cnblogs.com/yingger/p/5410269.html
Copyright © 2011-2022 走看看