我陷入困境,无法接收来自yahoo id的电子邮件(如果发件人电子邮件ID是yahoo)。 代码工作正常,没有给我任何错误,我收到来自gmail id的电子邮件。 我正在使用localhost(不是在实时服务器上的本地机器上)。 托管服务器:smtp.snapgrid.com 还使用了身份验证,启用ssl,使用适当的端口为ssl。 在snapgrid我做检查所以我得到的是来自雅虎的邮件被阻止,消息是,
消息:Type: blocked
Reason: 550 5.7.1 Unauthenticated email from yahoo.com is not accepted due to domain's
DMARC policy. Please contact administrator of yahoo.com domain if this was a legitimate
mail. Please visit http://support.google.com/mail/answer/2451690 to learn about DMARC
initiative.
请帮忙......
我以前发送的代码是(它的工作正常,只是给出了想法):方法1:
SmtpClient objSMTPClient = new SmtpClient();
objSMTPClient.Host = ConfigurationManager.AppSettings["strSMTPServer"];
string BODY_FORMAT = ConfigurationManager.AppSettings["EmailBodyContentFormat"];
MailMessage objMailMessage = new MailMessage(from.Trim(), to.Trim(), subject.Trim(), body.Trim());
objSMTPClient.UseDefaultCredentials = false;
if (BODY_FORMAT.ToUpper() == "HTML")
objMailMessage.IsBodyHtml = true;
else if (BODY_FORMAT.ToUpper() == "TEXT")
{
body = StripTags(body);
objMailMessage.IsBodyHtml = false;
objMailMessage.Body = body.ToString().Trim();
}
else
return false;
objSMTPClient.Send(objMailMessage);
return true;
方法2:
SmtpClient oMail = new SmtpClient();
MailMessage msg = new MailMessage();
MailAddress Madd = new MailAddress(from, "sunil");
oMail.Host = "smtp.gmail.com";
oMail.Port = 587;
oMail.EnableSsl = true;
oMail.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
oMail.Credentials = new NetworkCredential("sunil123@mydomain.com", "******");
oMail.Timeout = 20000;
msg.From = Madd;
msg.Body = body.ToString();
msg.To.Add(to);
msg.Subject = subject;
msg.IsBodyHtml = true;
oMail.Send(msg);
return true;
两个都正在运行没有错误运行错误....
答案 0 :(得分:1)
如果您通过属于Yahoo,Google或Office365之类的服务器发送邮件,则他们希望该帐户的发件人姓名与您在发件人地址中发送的用户名相匹配。
例如,这可以在本地SMTP服务器上运行:
Message.From = new MailAddress("GrandMasterFlush@domain.com");
然而,要让它通过像雅虎这样的人发送,需要你这样发送:
Message.From = new MailAddress("GrandMasterFlush@domain.com", "Grandmaster Flush");
如果提供的发件人姓名与帐户名称不完全匹配,则不会发送电子邮件。