首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

本机可以,放到服务器就不能发邮件了,该怎么处理

2012-02-08 
本机可以,放到服务器就不能发邮件了我做了一个发邮件的功能,在本机上测试是成功的,但放到服务器上就出错,

本机可以,放到服务器就不能发邮件了
我做了一个发邮件的功能,在本机上测试是成功的,但放到服务器上就出错,实在是太奇怪了。
我把部分代码帖出来,大家帮忙看看哈

发邮件的代码:
  string   s_from   =   "test@163.com ";
                string   s_to   =   "testto@163.com ";
                string   pwd   =   "520 ";
                string   s_body   =   "test ";
             
                int   i   =   s_from.IndexOf( "@ ");
                string   username   =   s_from.Substring(0,   i);


                MailAddress   from   =   new   MailAddress(s_from);
                MailAddress   to   =   new   MailAddress(s_to);
                MailMessage   mailobj   =   new   MailMessage(from,   to);
                mailobj.Subject   =   "subject ";
                mailobj.Body   =   s_body;
                mailobj.IsBodyHtml   =   true;
                mailobj.BodyEncoding   =   System.Text.Encoding.GetEncoding( "GB2312 ");
                mailobj.Priority   =   MailPriority.High;
       
               
                mailobj.Attachments.Add(new   Attachment(@ "E:\JBS\pdf\5dc48cb9-8751-44a1-880f-91e8dfbce164.pdf   "));
                SmtpClient   smtp   =   new   SmtpClient( "smtp.163.com ");
                //   smtp.Host   =   "smtp.163.com ";
                smtp.UseDefaultCredentials   =   false;
                smtp.Credentials   =   new   NetworkCredential(username,   pwd);
                smtp.DeliveryMethod   =   SmtpDeliveryMethod.Network;

smtp.Send(mailobj);
-----------------------
错误提示:
System.Net.Mail.SmtpException:   Failure   sending   mail.   --->   System.FormatException:   Smtp   server   returned   an   invalid   response.   at   System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[]   buffer,   Int32   offset,   Int32   read,   Boolean   readLine)   at   System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader   caller,   Boolean   oneLine)   at   System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader   caller)   at   System.Net.Mail.SmtpReplyReader.ReadLine()   at   System.Net.Mail.CheckCommand.Send(SmtpConnection   conn,   String&   response)   at   System.Net.Mail.DataCommand.Send(SmtpConnection   conn)   at   System.Net.Mail.SmtpTransport.SendMail(MailAddress   sender,   MailAddressCollection   recipients,   String   deliveryNotify,   SmtpFailedRecipientException&   exception)   at   System.Net.Mail.SmtpClient.Send(MailMessage   message)   ---   End   of   inner   exception   stack   trace   ---   at   System.Net.Mail.SmtpClient.Send(MailMessage   message)   at   Requestt.btnAdd_Click(Object   sender,   EventArgs   e)  




[解决办法]
(@ "E:\JBS\pdf\5dc48cb9-8751-44a1-880f-91e8dfbce164.pdf "));

这个有问题吧. 服务器上E盘 和你本地测试的E盘
[解决办法]
呵呵,接分了~我
[解决办法]
FrameWork 1.1

============================================
#region 发送邮件

/// <summary>
/// 发送邮件
/// </summary>
/// <param name= "_UserName "> 用户名 </param>
/// <param name= "_Mail "> 用户注册的电子邮件 </param>
/// <param name= "_Pwd "> 用户登录密码 </param>
/// <returns> 是否发送成功 </returns>
public bool SendMail (string _UserName,string _Mail,string _Pwd)
{
string _adminMail = System.Configuration.ConfigurationSettings.AppSettings[ "AdminMail "].ToString();
string _adminMailPwd = System.Configuration.ConfigurationSettings.AppSettings[ "AdminMailPwd "].ToString();
string _adminMailSmtp = System.Configuration.ConfigurationSettings.AppSettings[ "AdminMailSMTP "].ToString();

MailMessage mailObj = new MailMessage();
mailObj.To = _Mail;
mailObj.From = _adminMail;

mailObj.Subject = "您的内网密码 ";
mailObj.Body = "尊敬的用户: <br/> &nbsp;&nbsp;&nbsp;&nbsp;您好,您的内网注册信息如下 <br/> 用户名: " + _UserName + " 密码: " + _Pwd;

mailObj.BodyFormat = MailFormat.Html;

mailObj.Priority = MailPriority.High;

SmtpMail.SmtpServer = _adminMailSmtp;


string[] adminName = _adminMail.Split( '@ ');
///////////////////////////////////FrameWork1.1
mailObj.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1 ");
////设置验证用户名
mailObj.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendusername ", adminName[0].ToString());
////设置验证密码
mailObj.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendpassword ", _adminMailPwd);
//////////////////////////////////////////////

SmtpMail.Send(mailObj);
return true;
}
#endregion

[解决办法]
8好意思,lz的是2.0

======================

frameWork 2.0


============================

/// <summary>
/// 发送邮件
/// </summary>
/// <param name= "strSmtpServer "> smtp地址 </param>
/// <param name= "UserName "> 用户名 </param>
/// <param name= "Password "> 密码 </param>
/// <param name= "strFrom "> 发信人地址 </param>
/// <param name= "strto "> 收信人地址 </param>
/// <param name= "strSubject "> 邮件标题 </param>
/// <param name= "strBody "> 邮件正文 </param>
public static void SendMail(string strSmtpServer, string UserName, string Password, string strFrom, string strto, string strSubject, string strBody, string strFileName)
{
//生成一个 使用SMTP发送邮件的客户端对象
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(strSmtpServer);

//表示以当前登录用户的默认凭据进行身份验证
client.UseDefaultCredentials = true;



//包含用户名和密码
client.Credentials = new System.Net.NetworkCredential(UserName, Password);


//指定如何发送电子邮件。
//Network 电子邮件通过网络发送到 SMTP 服务器。
//PickupDirectoryFromIis 将电子邮件复制到挑选目录,然后通过本地 Internet 信息服务 (IIS) 传送。
//SpecifiedPickupDirectory 将电子邮件复制到 SmtpClient.PickupDirectoryLocation 属性指定的目录,然后由外部应用程序传送。

client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

//建立邮件对象
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(strFrom, strto, strSubject,strBody);

//定义邮件正文,主题的编码方式
message.BodyEncoding = System.Text.Encoding.GetEncoding( "gb2312 ");
message.SubjectEncoding = System.Text.Encoding.GetEncoding( "gb2312 ");

//获取或设置一个值,该值指示电子邮件正文是否为 HTML。
message.IsBodyHtml = false;

//指定邮件优先级

message.Priority = System.Net.Mail.MailPriority.Normal;

//添加附件
//System.Web.Mail.MailAttachment mailAttachment=new System.Web.Mail.MailAttachment(@ "f:/baihe.txt ");
if (strFileName != " " && strFileName != null)
{
Attachment data = new Attachment(strFileName);
message.Attachments.Add(data);
}


//发件人身份验证
client.Credentials = new System.Net.NetworkCredential(strFrom, Password);


//发送
client.Send(message);
}
[解决办法]
为什么会有这么多朋友遇到此问题?
最简单的办法就是与服务器客服联系
因为很多服务器不支持外部服务器发送邮件功能
只能用本服务器的邮件服务
[解决办法]
楼主检查一下服务器的环境!
[解决办法]
顶你个服务器的权限查看
[解决办法]
看服务器25端口开放没有。
[解决办法]
检查服务器的安全设置
[解决办法]
应该是服务器端口没开
[解决办法]
端口或认证不能通过
[解决办法]
服务器问题

热点排行