首页 新闻 会员 周边 捐助

邮箱不可用。 服务器响应为: 5.7.1 Unable to relay for

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-03-12 15:07

做的一个小工具,功能是给客户发通知邮件,主要代码如下:

MailMessage mail = new MailMessage();

            mail.Subject = title;
            mail.From = new MailAddress(fromAddress);
         
            foreach (string add in toAddress)
            {
                mail.To.Add(new MailAddress(add));
            }

            mail.Body = body;
            mail.BodyEncoding = System.Text.Encoding.UTF8;
            mail.IsBodyHtml = true;
            mail.Priority = MailPriority.Normal;           

            SmtpClient client = new SmtpClient();
            client.Host = smtpServer;
            client.Port = 25;
            client.UseDefaultCredentials = false;

            client.Credentials = new System.Net.NetworkCredential(fromAddress, fromUserPwd);              
            client.DeliveryMethod = SmtpDeliveryMethod.Network;           
            try
            {
                client.Send(mail);
            }
            catch (Exception e)
            {
                return;
            }               

我配置的发件邮箱是公司的邮箱,服务器也是公司的服务器,在线的问题是在发送邮件的时候,收件人是外网邮箱的话就收不到,我试过往qq,hotmail上发邮件,都报“邮箱不可用。 服务器响应为: 5.7.1 Unable to relay for XXX@XXX.com”这个错。

我想问一下我上面写的这样发邮件的代码是不是有问题?还是公司邮件服务器的问题?

最长的路漫漫的主页 最长的路漫漫 | 菜鸟二级 | 园豆:252
提问于:2015-02-12 10:09
< >
分享
所有回答(3)
0

你的方法非本人调试看不出原因,用我的方法吧,这个不会有问题。有注释,自己可以详细的看看

/// <summary>
        /// .net Mail发送邮件方法
        /// </summary>
        /// <param name="SendMailAddress">发送邮箱地址</param>
        /// <param name="SendMailPassWord">发送邮箱的密码</param>
        /// <param name="SmtpAddress">Smtp服务名:smtp.163.com</param>
        /// <param name="ToMail">收件人邮箱</param>
        /// <param name="MailTitle">邮箱地址</param>
        /// <param name="MailBody">发送内容</param>
        /// <param name="Ssl">是否启用SSL加密</param>
        /// <param name="DisplaySendMailAddress">收件方显示发件方地址</param>
        /// <returns></returns>
        public bool SendMailMethod(string SendMailAddress, string SendMailPassWord, string SmtpAddress,string ToMail,string MailTitle,string MailBody, bool Ssl, string DisplaySendMailAddress)
        {
            try
            {
                SmtpClient smtp = new SmtpClient(); //实例化一个 SmtpClient
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为   Network
                smtp.EnableSsl = Ssl;//smtp服务器是否启用SSL加密
                smtp.Host = SmtpAddress; //指定 smtp 服务器地址
                smtp.Port = 25;    //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去
                //如果你的SMTP服务器不需要身份认证,则使用下面的方式,不过,目前基本没有不需要认证的了
                smtp.UseDefaultCredentials = true;//如果需要认证,则用下面的方式
                smtp.Credentials = new NetworkCredential(SendMailAddress, SendMailPassWord);
                MailMessage mm = new MailMessage(); //实例化一个邮件类
                mm.Priority = MailPriority.High; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可
                mm.From = new MailAddress(DisplaySendMailAddress, "", Encoding.GetEncoding(936));//收件方看到的邮件来源;
                mm.Sender = new MailAddress(SendMailAddress, "", Encoding.GetEncoding(936));               
                mm.To.Add(ToMail);//邮件的接收者,支持群发,多个地址之间用 半角逗号 分开//当然也可以用全地址添加              
                mm.Subject = MailTitle; //邮件标题
                mm.SubjectEncoding = Encoding.GetEncoding(936);// 这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。
                //936是简体中文的pagecode,如果是英文标题,这句可以忽略不用
                mm.IsBodyHtml = true; //邮件正文是否是HTML格式
                mm.BodyEncoding = Encoding.GetEncoding(936);//邮件正文的编码, 设置不正确, 接收者会收到乱码
                mm.Body = MailBody;//邮件正文             
                smtp.Send(mm);         
                return true;
            }
            catch 
            {
                return false;
            }
        }
kezhiping | 园豆:197 (初学一级) | 2015-02-13 17:16
0

          相关的资料可以看   http://www.cnblogs.com/LikeNeng/p/3839815.html ,希望你帮助到你。

KenyonLi | 园豆:165 (初学一级) | 2015-02-26 11:22
0

这个问题最后发现是公司邮件服务器的问题,配置的那个邮件服务器只能发内网

最长的路漫漫 | 园豆:252 (菜鸟二级) | 2015-03-12 15:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册