C# 免费发邮件

错误说明

                使用587
                报   服务器要求安全连接或客户端未通过身份验证。 服务器响应为:Must issue a STARTTLS command first.!
                设置 client.EnableSsl = true;
                报   邮箱不可用。 服务器响应为:Mailbox not found or access denied!

                腾讯官方解释https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=20022&no=1000742
                出错原因:您要发送的收件人短时间内收到大量邮件,为避免受到恶意攻击,暂时禁止向该收件人发信。 
                改善建议:暂停向该收件人发信,稍后重新尝试。


                换了个email测试通过,(被这个错误一度坑了好久......)

                使用25
                设置 client.EnableSsl = false;

 

 /// <summary>
        /// 没有gmail邮箱
        /// </summary>
        /// <param name="email"></param>
        /// <param name="data"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        public static string SendMailUseGmail(string email,string data,string title)   
        {   
            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();   
            msg.To.Add(email);   
            msg.CC.Add(email);   
            /*  
            * msg.To.Add("b@b.com");  
            * msg.To.Add("b@b.com");  
            * msg.To.Add("b@b.com");可以发送给多人  
            */               
            /*  
            * msg.CC.Add("c@c.com");  
            * msg.CC.Add("c@c.com");可以抄送给多人  
            */
            msg.From = new MailAddress(getRandKey(3) + "@" + getRandKey(3) + ".com", "管理员", System.Text.Encoding.UTF8);   
            /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
            msg.Subject = title;//邮件标题  
            msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码  
            msg.Body = data; //内容  
            msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码  
            msg.IsBodyHtml = false;//是否是HTML邮件  
            msg.Priority = MailPriority.High;//邮件优先级   

            SmtpClient client = new SmtpClient();
            client.Credentials = new System.Net.NetworkCredential("285****789@gmail.com", "prdrjdpfivphdfid");   
            //上述写你的GMail邮箱和密码   
            client.Port = 587;//Gmail使用的端口   
            client.Host = "smtp.gmail.com";   
            client.EnableSsl = true;//经过ssl加密   
            client.UseDefaultCredentials = false;
            //object userState = msg;
            StringBuilder sb_result = new StringBuilder();
            try   
            {   
                //client.SendAsync(msg, userState);   
                //简单一点儿可以
                client.Send(msg);   
                sb_result.Append("发送成功");
            }   
            catch (System.Net.Mail.SmtpException ex)   
            {
                sb_result.Append("发送失败" + ex);
            }
            return sb_result.ToString();
        }

        /// <summary>
        /// 163邮箱发送失败
        /// </summary>
        /// <param name="email"></param>
        /// <param name="data"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        public static string SendMailUse163(string email, string data, string title)
        {
            string Host = "smtp.163.com";//指定SMTP服务器主机  
            int Port = 587;
            SmtpClient client = new SmtpClient(Host,Port);//生成SmtpClient实例,用它发送电子邮件              

            client.UseDefaultCredentials = true;  //是否需要身份验证            
            string username = "sendemail001@163.com";
            string pwd = "hl123456789";
            client.Credentials = new System.Net.NetworkCredential(username, pwd);//发件人邮箱的用户和密码.中的密码更改为授权码号  
            
            client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            client.EnableSsl = true;
            
            MailMessage message = new MailMessage();
            MailAddress fromAddr = new System.Net.Mail.MailAddress("se*****001@163.com", "管理员");
            message.From = fromAddr;
            message.To.Add(email);
            //Attachment attach = new Attachment(@"附件存放地址");//获取选择的附件  
            //Attachment attach1 = new Attachment(@"附件存放地址");  
            //message.Attachments.Add(attach);//将附件添加到邮件中,MailMessage类的Attachments属性可以Add多个附件  
            //message.Attachments.Add(attach1);  
            message.Subject = title;    //获取输入的邮件标题  
            message.SubjectEncoding = Encoding.UTF8;
            message.Body = data;        //"可以设置成html页面的形式";  
            message.BodyEncoding = Encoding.UTF8;
            message.Priority = MailPriority.High;
            message.IsBodyHtml = true;  //想要显示Html页面形式必须设置  
            
            StringBuilder sb_result = new StringBuilder();
            try
            {
                client.Send(message);
                //client.Send("sendemail001@163.com", email, title, data);
                client.ServicePoint.CloseConnectionGroup(client.ServicePoint.ConnectionName);
                //简单一点儿可以client.Send(msg);   
                sb_result.Append("发送成功");
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                sb_result.Append("发送失败" + ex);
            }
            return sb_result.ToString();
        }

        private static string getRandKey(int count)
        {
            string key = string.Empty;
            string[] jh = new string[] { "a", "b", "c", "c", "d", "e", "f", "g", "h", "i", "j", "k"
                ,"l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K"
                ,"L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
            Random ra = new Random(Guid.NewGuid().GetHashCode());
            for (int i = 0; i < count; i++)
            {

                key = key + jh[ra.Next(jh.Length)];
            }

            return key;
        }

        /// <summary>
        /// 最后qq邮箱可以了
        /// </summary>
        /// <param name="email"></param>
        /// <param name="data"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        public static string SendEmailQQ(string email, string data, string title)
        {
            string res = "";
            try
            {
                MailMessage msg = new MailMessage();
                msg.To.Add(email);//收件人地址
                //msg.To.Add("to@qq.com");//收件人地址
                //msg.CC.Add("cc@qq.com");//抄送人地址

                msg.From = new MailAddress("2851237789@qq.com", "管理员");//发件人邮箱,名称

                msg.Subject = title;
                msg.SubjectEncoding = Encoding.UTF8;
                msg.Body = data;
                msg.BodyEncoding = Encoding.UTF8;
                msg.IsBodyHtml = true;

                SmtpClient client = new SmtpClient();

                client.Host = "smtp.qq.com";//SMTP服务器地址
                client.Port = 587;//SMTP端口,QQ邮箱填写587

                client.EnableSsl = true;//启用SSL加密

                client.Credentials = new NetworkCredential("285******9@qq.com", "dgm*******dcge");//发件人邮箱账号,授权密码

                client.Send(msg);//发送邮件
                res = ("发送成功!");
            }
            catch (Exception ex)
            {
                res = (ex.Message);
            }

            return res;
        }

格式都差不多,就是需要注意参数的设置。

转载于:https://my.oschina.net/qingqingdego/blog/2998116

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值