2016-10-18 34 views
0

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

using System.Net.Mail; 
namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 
      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中的相同地址。

+0

检查类似的问题:http://stackoverflow.com/questions/3165721/mailbox-unavailable-the-server-response-was-5-7-1-unable-to-relay-for-abcxyz –

+0

是啊我做了,尽管有相同的错误信息,但对我来说,这看起来不是同样的问题。 –

+0

即时通讯发送到Gmail帐户,我不需要本地端口的SMTP服务器? –

回答

1

我敢肯定,如果你有client.UseDefaultCredentials = false;,你需要设置凭据。至少这是我做的:

client.UseDefaultCredentials = false; 

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

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

+0

这取决于 - 如果SMTP接受匿名连接,则不一定需要提供凭据。此外,电子邮件成功发送到自身(表明与SMTP的连接不是问题),而不是其他域。这似乎是SMTP上的权限错误。 – user1666620

+0

发送给自己的所有电子邮件如果托管在同一个域/服务器上,则会成功。 OP正在尝试发送到Gmail。我敢打赌,如果他从outlook中删除了他的信誉,并试图发送到Gmail,他会得到同样的错误。 –

+0

所以你同意这个答案可能无济于事。 – user1666620

相关问题