本机可以,放到服务器就不能发邮件了
我做了一个发邮件的功能,在本机上测试是成功的,但放到服务器上就出错,实在是太奇怪了。
我把部分代码帖出来,大家帮忙看看哈
发邮件的代码:
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/> 您好,您的内网注册信息如下 <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端口开放没有。
[解决办法]
检查服务器的安全设置
[解决办法]
应该是服务器端口没开
[解决办法]
端口或认证不能通过
[解决办法]
服务器问题