IDE:Visual Studio 2010[C#] + .NET 4.0框架
引用.NET 4.0框架的System.Net.Mail命名空间开发发送邮件的程序。发送方:QQ邮箱 接收方:163邮箱
基于上述开发平台,以下列举了三种通过QQ邮箱的SMTP服务器发送QQ邮件至163邮箱提示“发送邮件失败”可能的解决方案。
1.QQ邮箱的SMTP服务是否正常。可取消SMTP服务后再重新勾选启用;
2.是否由于该QQ账号向该163邮箱一段时间内发送了过多的邮件而被163邮箱认为是垃圾邮件。可尝试设置163邮箱反垃圾选项中的白名单。
3.是否由于该QQ账号向该163邮箱一段时间内发送了过多的邮件而使得QQ邮箱有一定的“自卫行为”,即QQ认为该账号处于非正常状态继而*该账号(或该账号的IP/IP段)。取消SMTP服务后再重新勾选启用或尝试用该账号在异地发送邮件,可能有助于解除QQ邮箱对该账号的*(有待测试。如测试,请谨慎为之。对由于测试此项可能性而产生的账号安全风险本人概不负责)。
附通过QQ邮箱的SMTP服务器成功发送QQ邮件至163邮箱的代码(截至2014年3月19号仍可发送成功):
private void btnSend_Click(object sender, System.EventArgs e)
{
string QQNum = txtQQ.Text + "@qq.com" ;
string QQPwd = txtPwd.Text;
string wy = "xxxxx@163.com";
MailAddress from = new MailAddress(QQNum);
MailAddress to = new MailAddress(wy);
MailMessage mail = new MailMessage(from, to);
mail.Subject = "主题";
mail.Body = "内容";
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
mail.Sender = new MailAddress(QQNum);
mail.BodyEncoding = Encoding.UTF8;
mail.IsBodyHtml = false;
SmtpClient client = new SmtpClient("smtp.exmail.qq.com");
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(QQNum, QQPwd);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
client.Send(mail);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}