测试了三个作为发件人的163账号,只有一个能成功,而且怎么发都没有问题。但是用另外的两个怎么发都是提示:邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available。
PS:密码是没有错误的,登录邮箱来验证过。成功的是自己一直在用的账号,有四五年了。另一个是朋友的,不成功,然后自己再注册一个新的来测试,也不成功。难道163的账号分级别对待,在某个日期前注册的账号能用这个功能?还是自己的设置问题?
大虾们~指点指点啊!有劳了。。
用过两个程序测试,结果都一样,一个是Interop.jmail.dll ,代码如下:
1 protected void btnsend_Click(object sender, EventArgs e)
2 {
3 //建立发送邮件对象
4 jmail.MessageClass jm = new jmail.MessageClass();
5 //设置邮件编码方式
6 jm.Charset = "GB2312";
7 //是否将信头编码成iso-8859-1字符集
8 jm.ISOEncodeHeaders = false;
9 //邮件的发送人的信箱地址
10 jm.From = this.txtSender.Text;
11 //邮件的发送人
12 jm.FromName = this.txtSUser.Text;
13 //邮件的主题
14 jm.Subject = this.txtSubject.Text;
15 //身份验证的用户名
16 jm.MailServerUserName = this.txtEUser.Text;
17 //身份验证的密码
18 jm.MailServerPassWord = this.txtEPwd.Text;
19 //如果需要添加多个收件人,则重复下面的语句即可
20 jm.AddRecipient(this.txtReceiver.Text, "", "");
21 //邮件内容
22 jm.Body = this.txtContent.Text;
23 //判断是否添加附件
24 if (upload.PostedFile.FileName != "")
25 {
26 string attpath = upload.PostedFile.FileName;
27 jm.AddAttachment(attpath, true, attpath.Substring(attpath.
28 LastIndexOf(".") + 1, 3));
29 }
30 //邮件服务器
31 string str = this.txtEServer.SelectedValue;
32 if (jm.Send(str, false))
33 {
34 Page.RegisterClientScriptBlock("OK", "<script>alert('发送成功!')</script>");
35 }
36 else
37 {
38 Page.RegisterClientScriptBlock("OK", "<script>alert('发送失败,请仔细检查邮件服务器的设置是否正确!')</script>");
39 }
40 jm = null;
41
42 }
另一个是用微软的类:代码如下:
1 protected void btnsend_Click(object sender, EventArgs e)
2 {
3 //创建MailMessage对象
4 MailMessage mailMsg = new MailMessage();
5 //设置收件人的邮件地址
6 mailMsg.To = this.tre.Text;
7 //设置发送者的邮件地址
8 mailMsg.From = this.tname.Text;
9 //设置邮件主题
10 mailMsg.Subject = this.tsubject.Text;
11 //设置邮件内容
12 mailMsg.Body = this.tcontent.Text;
13 //设置支持服务器验证
14 mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
15 //设置用户名
16 mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", this.tname.Text);
17 //设置用户密码
18 mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", this.tpass.Text);
19 try
20 {
21 //设置发送邮件服务器
22 SmtpMail.SmtpServer = dropserver.SelectedValue;
23 //发送邮件
24 SmtpMail.Send(mailMsg);
25 Response.Write("<script>alert('邮件发送成功!')</script>");
26 }
27 catch(Exception ex)
28 {
29 Response.Write("<script>alert('邮件发送失败!')</script>");
30 }
31 }
这是因为现在网易不支持新注册的邮箱连接接smtp服务器去发邮件,你再用一个老邮箱试试,我以前就遇到过,不过还要注意,邮件不要连续发得太急太多,这样的网易可能会把帐号封掉。你可以每发一封邮件后让线程休眠一点时间。
被封掉的话,你正常登录一次,删掉一些邮件就解封啦
从2006年11月16日起,网易免费邮件系统(即:网易163/126新注册的邮箱用户)的POP3及SMTP服务将暂停开通不能开通pop3和smtp服务
你可以选择其他邮箱服务器的smtp 或pop3服务
我有个同学他前两月,同时申请的两个账号,一个能发一个不能发。。。