使用带有用户名密码认证的smtp服务器发送电子邮件C#

时间:2010-04-28 17:29:49

标签: c# smtp sendmail smtpclient

我有一段发送电子邮件的代码..继承人代码

这对我不起作用。这是一个远程smtp服务...我双重检查电子邮件Web访问工作正常..我可以使用gui登录,接收和发送电子邮件。

但是当我尝试通过代码来实现它时,它失败并显示消息......

  

{System.Net.Mail.SmtpException:SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.7.0没有给出AUTH命令。<​​/ p>

任何人都可以提出建议......而且他们也没有公开EWS ie.e exchange web service ./ ..这是要走的路..

端口为25,没有SSL或TLS

Button b = sender as Button;
try
{
    MailMessage msg = new MailMessage(senderEmail, recieverEmail, "afdasfas", "safasfa");
    //MailMessage msg = new MailMessage(senderEmail, recieverEmail, subject, subject);
    System.Net.Mail.SmtpClient mailclient = new System.Net.Mail.SmtpClient(EmailSmtpServer, outgoingPort);
    System.Net.NetworkCredential auth = new System.Net.NetworkCredential(senderEmail, senderPassword);
    mailclient.Host = EmailSmtpServer;
    mailclient.UseDefaultCredentials = false;
    mailclient.Credentials = auth;
    mailclient.Send(msg);
    MessageBox.Show(b.Content + ":WORKED");
}
catch (Exception e4)
{
    MessageBox.Show(b.Content + ": " +e4.Message);
    MessageBox.Show(b.Content + ": " + e4.StackTrace);
}

3 个答案:

答案 0 :(得分:4)

我认为你不想设置

mailclient.UseDefaultCredentials = true;

详细了解此选项here


您还应该测试您是否可以通过该smtp服务器实际发送电子邮件。

尝试通过telnet连接并进行授权。还有许多服务可以让您在线发送测试消息(例如http://pingability.com/smtptest.jsp)。

答案 1 :(得分:1)

System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.7.0未给出AUTH命令。<​​/ strong>

您首先尝试登录而不先发送 AUTH 命令。这就是为什么你的web gui会自动插入它自己的 AUTH 命令,但你当前的客户端应用程序没有收到你转发到服务器的命令,但是服务器需要认证

答案 2 :(得分:0)

您可能需要添加mailclient.EnableSsl = true;