当我使用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中的相同地址。
答案 0 :(得分:1)
我非常确定如果您有client.UseDefaultCredentials = false;
,则需要设置凭据。至少这就是我所做的:
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(someusername, somepassword);
编辑:我应该澄清,client.UseDefaultCredentials = false;
并不一定意味着您需要列出凭据,但如果您尝试发送到外部域(gmail.com),那么您的SMTP服务器很可能需要一些SMTP验证的类型。