读书人

关于SMTP发送邮件出现的有关问题(asp

发布时间: 2012-01-20 18:53:53 作者: rapoo

关于SMTP发送邮件出现的问题(asp.net)
问:
1.首先,你们知道邮件服务器在哪里设置smtp吗?
2.网上的2种方法我都设置了,能用163的邮箱发(163.com),但是其他的都不行(QQ,126等),为什么呀?程序如下:
方法1:
//发送邮件
public int SendMail(string strComment, string strSubject, string strEmailTo) //strComment 为邮件内容,strSubject 主题,strEmailTo为 收件人的地址
{
int li_Return = 0;
string ls_ErrText = " ";
try
{
DataAccess.Emails emailObj = new DataAccess.Emails();
DataTable dtNew = new DataTable();
li_Return = emailObj.GetEmails(dtNew, ref ls_ErrText);
if (li_Return <= 0)
{
ClientScript.RegisterStartupScript( " ".GetType(), "KeyError ", " <script language= 'javascript '> alert( '获取邮件地址失败! ');parent.f_Submit(); </script> ");
}

MailMessage objMailMessage = new MailMessage();
objMailMessage.From = new MailAddress(dtNew.Rows[0][ "EMail "].ToString()); //邮箱地址 support@biz369.com
objMailMessage.Subject = strSubject;
objMailMessage.SubjectEncoding = System.Text.Encoding.Default;
objMailMessage.Body = strComment;
objMailMessage.BodyEncoding = System.Text.Encoding.Default;
objMailMessage.IsBodyHtml = true;
objMailMessage.To.Add(strEmailTo);
SmtpClient client = new SmtpClient(dtNew.Rows[0][ "SMTP "].ToString());// IP 或 SMTP.josson.com

client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(dtNew.Rows[0][ "EMail "].ToString(), dtNew.Rows[0][ "Pwd "].ToString());//邮箱地址,密码


client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(objMailMessage);
li_Return = 1;
}
catch (Exception e)
{
e.ToString();
li_Return = -1999050;
}
return li_Return;
}
方法2:

MailMessage objMailMessage = new MailMessage();
objMailMessage.From = new MailAddress(dtNew.Rows[0][ "EMail "].ToString()); //邮箱地址 support@163.com
objMailMessage.Subject = strSubject;
objMailMessage.SubjectEncoding = System.Text.Encoding.Default;
objMailMessage.Body = strComment;
objMailMessage.BodyEncoding = System.Text.Encoding.Default;
objMailMessage.IsBodyHtml = true;
objMailMessage.To.Add(strEmailTo);
SmtpClient client = new SmtpClient();
client.Host = dtNew.Rows[0][ "SMTP "].ToString();// SMTP.josson.com
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(dtNew.Rows[0][ "EMail "].ToString(), dtNew.Rows[0][ "Pwd "].ToString());//邮箱地址,密码
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(objMailMessage);
li_Return = 1;
换成163的邮箱基本OK,其他网站不行,以前好象有类似的帖子,但是没人解决掉,斑竹哥们,出来说话,哈哈!~先谢谢了!~

[解决办法]
参考:发送邮件
http://csharp.xdowns.com/archives/2006/01/21/119.html
http://www.cnblogs.com/stswordman/archive/2006/05/23/407263.html



[解决办法]
public void SendMail (mailobject mail)
{

MailMessage mailObj = new MailMessage();
// 设置email的 'from '和 'to '的地址
mailObj.From =mail.MailFrom;
mailObj.To =mail.MailTo;
mailObj.Subject =mail.MailSubject;
mailObj.Body =mail.MailBody;
System.Web.Mail.MailEncoding enc=new MailEncoding();
enc=MailEncoding.Base64;
MailAttachment att=new MailAttachment(mail.Attachments,enc);
mailObj.Attachments.Add(att);
// 使用SmtpMail对象来发送邮件。
SmtpMail.SmtpServer=mail.stmpserver;
mailObj.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1 ");
mailObj.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendusername ",mail.login);
//密码
mailObj.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendpassword ",mail.pwd);
SmtpMail.Send(mailObj);
}

public class mailobject
{
public string MailFrom;
public string MailTo;
public string MailSubject;
public string MailBody;
public string MailFormat;
public string mformat;//对邮件进行加密
public string Attachments;//附件
public string stmpserver;
public string login;
public string pwd;
public string email_to;

}
[解决办法]
很多邮箱以邮件都需要smtp验证的.
[解决办法]
有专门的邮件开源组件.
[解决办法]
跟踪调试看: client.Send(objMailMessage); 这步是否通过,如果通过就代表成功了。
否则是SMTP设置有问题。
[解决办法]
smtp.sina.com 也可以发
[解决办法]
1.首先,你们知道邮件服务器在哪里设置smtp吗?

你是要自己配置smtp服务器?还是?
如果自己配置,要看你用的是什么软件了。

2,看看是什么原因,是不是被拒了?什么原因被拒的。
这些都是有协议可查的。

读书人网 >asp.net

热点推荐