首页 新闻 会员 周边

使用smtp发送邮件的问题

0
悬赏园豆:10 [已解决问题] 解决于 2020-12-28 09:19

如题,在asp.net网站中做了一个发送邮件的功能,

用163的邮箱作为发件人,我在自己机器测试,基本都能发送成功,

但是部署到服务器以后会经常出现类似下面这样的错误,一般提交3次会出现一次,有时候第一次提交就失败,反复多试就有一次会成功的。

事务失败。 服务器响应为: DT:SPM 163 smtp8,DMCowABnvOHWpWxYkkXGHA--

菜鸟E419的主页 菜鸟E419 | 初学一级 | 园豆:120
提问于:2017-01-09 13:58
< >
分享
最佳答案
0

代码贴出来。。

https://q.cnblogs.com/q/64362/这里应该有你需要的答案

收获园豆:10
~扎克伯格 | 小虾三级 |园豆:1923 | 2017-01-09 14:21
 /// <summary>
        /// 
        /// </summary>
        /// <param name="from">发件邮箱账号</param>
        /// <param name="pwd">发件邮箱账号密码</param>
        /// <param name="to">收件人邮箱</param>
        /// <param name="title">主题</param>
        /// <param name="content">内容</param>
        /// <param name="attachFileName">附件</param>
        /// <param name="pihao">我自己的一个用来重新命名附件的参数</param>
        /// <returns></returns>
        public static string SendEmail(string from, string pwd, string to, string title, string content, string attachFileName,string pihao)
        {
            string[] strs = from.Split('@');
            string[] strs2 = strs[1].Split('.');
             
            //发送
            SmtpClient client = new SmtpClient(string.Format("smtp.{0}.com", strs2[0]));   //设置邮件协议
            client.UseDefaultCredentials = false;//这一句得写前面
            client.EnableSsl = true;
            switch (strs2[0])
            {
                case"163":
                    case"126":
                    case"qq":
                    case"sina":
                    client.Port = 25;
                    break;
                case"Gmail":
                    client.Port = 587;
                    break;
                default:
                    client.Port = 25;
                    break;
            }
           // client.Port = 25;
            client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
            client.Credentials = new NetworkCredential(strs[0].ToString(), pwd); //通过用户名和密码 认证
        
            
            string newFileName = "";
            //因为之前附件名是guid命名的,所以怕因为这个会被当成垃圾邮件,所以重新命名附件
            if (File.Exists(attachFileName))
            {
                FileInfo fi = new FileInfo(attachFileName);
                string dire = Path.GetDirectoryName(attachFileName);
                string ex = fi.Extension;
                newFileName = Path.Combine(dire,"报告单"+pihao+ex);
                fi.CopyTo(newFileName,true);
            }
            MailMessage mmsg = new MailMessage();
            try
            {
                mmsg = new MailMessage(new MailAddress(from), new MailAddress(to)); //发件人和收件人的邮箱地址
                mmsg.Subject = title;      //邮件主题
                mmsg.SubjectEncoding = Encoding.UTF8;   //主题编码
                mmsg.Body =content;         //邮件正文
                mmsg.BodyEncoding = Encoding.UTF8;      //正文编码
                mmsg.IsBodyHtml = true;    //设置为HTML格式           
                mmsg.Priority = MailPriority.High;   //优先级

                if (newFileName != "")
                {
                    mmsg.Attachments.Add(new Attachment(newFileName));//增加附件
                }

                client.Send(mmsg);
               
                return "邮件发送成功!OK!";

            }

            catch (System.Net.Mail.SmtpException ex)
            {

                return "邮件发送失败,请稍后重试!Sending message to server failed,please try again latter";
                // MessageBox.Show(ex.Message);
            }
            finally
            {
               
                mmsg.Dispose();
                //需要释放mmsg后再delete
                File.Delete(newFileName);
            }
        }
菜鸟E419 | 园豆:120 (初学一级) | 2017-01-09 17:00
其他回答(2)
0

很正常,邮件服务器对请求进行过滤了,太频繁的请求不让通过。有关键字的也一样。你可以在网上找到对应的错误解释。

wangjinming | 园豆:571 (小虾三级) | 2017-01-09 14:25
0

请确保是用企业邮箱发送的

心怀宇宙 | 园豆:643 (小虾三级) | 2017-01-09 14:49

晕,我自己的邮箱是个人的都可以发送,没规定必须是企业邮箱吧

支持(0) 反对(0) 菜鸟E419 | 园豆:120 (初学一级) | 2017-01-09 16:56

@菜鸟E419: 个人邮箱是可以发送,但是一直发送的话可能就发到对方的垃圾邮件里了

支持(0) 反对(0) 心怀宇宙 | 园豆:643 (小虾三级) | 2017-01-09 16:58

@双子rain: 这个我知道的,但是发送到垃圾邮件也是发送成功了。我的错误是有时候根本发布出去

支持(0) 反对(0) 菜鸟E419 | 园豆:120 (初学一级) | 2017-01-09 17:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册