我有一个Window Service(Asp.net C#),它会在一段时间后向用户发送电子邮件(使用SMTP)。它在一段时间内运行良好,但当它用“@ gmail.com”包含电子邮件时,它突然出现以下错误:
window service this mail server requires authentication when attempting
to send to a non-local e-mail address.
Please check your mail server client settings or contact your
administrator to verify that the domain or address is defined for this server.
但凭借相同的凭据和代码在IIS上托管在同一服务器(系统)上的网站上触发时发送电子邮件(发送到同一个电子邮件地址)。
我在网上搜索,但无法理解为什么它会从Asp.net网站代码发送电子邮件,而不是从.net Windows服务代码发送电子邮件(尽管这个问题在向同一个域发送邮件时不会发生,即。用作SMTP服务器的abc.com。
我在这里缺少的任何想法或建议。
由于
答案 0 :(得分:0)
在我的案例中,罪魁祸首是以下代码行:
smtp.UseDefaultCredentials = false;
请参阅下面的代码(在评论之后发送的电子邮件没有错误):
using (mmMessage)
{
mmMessage.Subject = strSubject;
mmMessage.Body = strBody;
mmMessage.IsBodyHtml = blnIsBodyHTML;
mmMessage.Headers.Add("Reply-To", FromEmailAddress);
SmtpClient smtp = new SmtpClient();
using (smtp)
{
smtp.Host = SMTPServer;
smtp.Credentials = new System.Net.NetworkCredential(SMTPUser, SMTPPwd);
smtp.Port = Port;
//smtp.UseDefaultCredentials = false;
smtp.EnableSsl = IsEnableSsl;
smtp.Send(mmMessage);
}
}