Windows服务此邮件服务器在尝试发送到非本地电子邮件地址时需要身份验证

时间:2015-05-19 14:35:18

标签: c# email windows-services smtp smtp-auth

我有一个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。

我在这里缺少的任何想法或建议。

由于

1 个答案:

答案 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);
            }
        }
相关问题