程序化电子邮件触发"服务器响应是:5.7.1无法中继"

时间:2016-10-18 14:51:09

标签: c# visual-studio email smtp

当我使用outlook时,我能够将测试电子邮件发送到我的gmail地址,但是,当我从控制台应用程序执行它时,它会触发:"服务器响应是:5.7.1无法中继&#34 ;

using System.Net.Mail;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            MailMessage mail = new MailMessage("xxx@myCompany.com", "xxx@gmail.com");
            SmtpClient client = new SmtpClient();
            client.Port = 25;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Host = "xxx.xxx.com";
            mail.Subject = "this is a test email.";
            mail.Body = "this is my test email body";
            client.Send(mail);
        }
    }
}

我通过outlook验证了我有正确的客户端主机。我还向自己发送了一封测试邮件(从xx @ mycompany到xx @ mycompany)并且有效(虽然它将它发送到垃圾箱)。为什么它不允许我通过此控制台应用程序发送外发电子邮件,但我可以通过Outlook中的相同地址。

1 个答案:

答案 0 :(得分:1)

我非常确定如果您有client.UseDefaultCredentials = false;,则需要设置凭据。至少这就是我所做的:

 client.UseDefaultCredentials = false;

 client.Credentials = new System.Net.NetworkCredential(someusername, somepassword);

编辑:我应该澄清,client.UseDefaultCredentials = false;并不一定意味着您需要列出凭据,但如果您尝试发送到外部域(gmail.com),那么您的SMTP服务器很可能需要一些SMTP验证的类型。