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);
}
}