【问题标题】:send email C# using smtp server with username password authentification使用带有用户名密码身份验证的 smtp 服务器发送电子邮件 C#
【发布时间】:2011-02-13 11:27:56
【问题描述】:

我有一段发送电子邮件的代码.. 这是代码

这对我不起作用。这是一个远程 smtp 服务......我仔细检查了电子邮件网络访问是否正常......我可以使用 gui 登录,接收和发送电子邮件。

但是当我尝试通过代码进行操作时......它失败并显示消息......

{System.Net.Mail.SmtpException: SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.0 No AUTH command has been given。

任何人都可以建议......而且他们没有暴露 EWS,即交换网络服务 ./.. 这是要走的路..

端口为 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);
}

【问题讨论】:

  • 你能把你的代码放在一个代码块中吗?使其更易于阅读。

标签: c# smtp sendmail smtpclient


【解决方案1】:

我认为你不想设置

mailclient.UseDefaultCredentials = true;

阅读有关此选项的更多信息here


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

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

【讨论】:

  • 不..我很抱歉打错了..我正在尝试所有选项..我将编辑帖子...当我尝试运行代码时遇到此异常{System.Net.Mail .SmtpException:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.0 未给出 AUTH 命令。在 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode,字符串响应)
  • 我可以远程登录到远程 smtp 服务...当我使用身份验证登录然后提供 base64 格式的用户名和密码时,我可以登录...所以我猜是 C# 代码的问题。 ..并且sendMail不发送“auth login”命令或不发送base64中的用户名/密码......你认为你可以将我指向已经更正的博客/网站......我尝试了一堆,它对我没用...谢谢。
  • @KK,你的代码看起来不错。您是否将用户名和密码以纯文本形式传递给 NetworkCredential 构造函数?
  • 我将它作为base64传递......即使从我的家庭网络....但是当我从哥伦比亚的客户运行它时不起作用...
【解决方案2】:

System.Net.Mail.SmtpException:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.0 No AUTH command has been given。

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

【讨论】:

    【解决方案3】:

    也许你需要添加mailclient.EnableSsl = true;

    【讨论】:

    • 不..我很抱歉打错了..我正在尝试所有选项..我将编辑帖子...当我尝试运行代码时遇到此异常{System.Net.Mail .SmtpException:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.0 未给出 AUTH 命令。在 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode,字符串响应)
    • 远程smtp服务不需要开启smtp
    • 我可以远程登录到远程 smtp 服务...当我使用身份验证登录然后提供 base64 格式的用户名和密码时,我可以登录...所以我猜是 C# 代码的问题。 ..并且sendMail不发送“auth login”命令或不发送base64中的用户名/密码......你认为你可以将我指向已经更正的博客/网站......我尝试了一堆,它对我没用...谢谢。
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 2011-04-14
    • 2011-06-18
    • 2011-01-17
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多