c#使用身份验证发送电子邮件。标准方法不起作用

时间:2010-05-17 16:50:18

标签: c# security email

我正在尝试使用以下非常标准的代码发送电子邮件。但是,我收到了以下错误......

MailMessage message = new MailMessage();

message.Sender = new MailAddress("sen@der.com");
message.To.Add("reci@pient.com");
message.Subject = "test subject";
message.Body = "test body";

SmtpClient client = new SmtpClient();
client.Host = "mail.myhost.com";
//client.Port = 587;

NetworkCredential cred = new NetworkCredential();

cred.UserName = "sen@der.com";
cred.Password = "correct password";
cred.Domain = "mail.myhost.com";
client.Credentials = cred;
client.UseDefaultCredentials = false;     

client.Send(message);

  

邮箱不可用。服务器   回应是:没有这样的   用户在这里。

此收件人电子邮件地址绝对有效。为了使这个帐户工作,我不得不在outlook中做一些特殊的步骤。具体来说,我必须更改帐户设置 - >更多设置 - >传出服务器 - >我的传出服务器需要身份验证和使用相同的设置。我想知道是否还有其他策略。

我认为这里的关键是我的主机是服务器智能,我知道这里的一些人使用它们,所以希望其他人能够通过这个。我确实谈过支持,但他们说我有自己的编码问题:o

2 个答案:

答案 0 :(得分:2)

试试这个......

NetworkCredential cred = new NetworkCredential(); 

cred.UserName = "sen@der.com"; 
cred.Password = "correct password"; 
//cred.Domain = "mail.myhost.com"; 

...除非您使用Kerberos或其他一些复杂的身份验证,否则您不需要提供.Domain

修改...

查看我的扩展answer。它有一个如何发送带有身份验证的电子邮件的示例。它也启用了SSL,因此您可能需要删除该部分。

答案 1 :(得分:0)

服务器sen@der.com上没有名为mail.myhost.com的邮箱,请检查