【问题标题】:Sending Email Using System.Net.Mail in C# [duplicate]在 C# 中使用 System.Net.Mail 发送电子邮件 [重复]
【发布时间】:2012-01-06 16:22:01
【问题描述】:

可能重复:
Send email using System.Net.Mail through gmail. (C#)

我正在使用此代码使用 C# .Net 发送电子邮件 但它在运行时会产生错误。代码是:

 MailMessage MyMailMessage = new MailMessage("example@gmail.com", "example@gmail.com",

"write your subject Here ", "Hi,This is the test message ");

MyMailMessage.IsBodyHtml = false;

NetworkCredential mailAuthentication = new NetworkCredential("example@gmail.com","xxxxxxxx");

    SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);

    mailClient.EnableSsl = true;

    mailClient.UseDefaultCredentials = false;

    mailClient.Credentials = mailAuthentication;

    mailClient.Send(MyMailMessage);

添加我的 gmail 用户名和密码并运行代码后发生异常

mailClient.Send(MyMailMessage); 

有消息

Failure sending mail.

我也尝试了 25 端口,但问题仍然存在。

除了 Visual Studio 和 .Net 框架之外,是否还需要其他任何东西? 我有所有版本的 .Net Frameworks。

请帮帮我!

【问题讨论】:

  • 是否有内部异常提供更多信息?
  • 您的代码对我有用。您确定您的用户名和密码正确吗?

标签: c# .net smtp system.net.mail


【解决方案1】:

这些是我用于从 GMail 发送电子邮件的设置,将它们放在您的 web.config 中,然后您只需使用 new SmtpClient().Send(msg); 发送您的邮件。如果您从应用程序中的多个位置发送邮件,这将非常方便。它还允许您更改您的邮件配置,而无需重新编译您的应用程序

<configuration>
    <system.net>
        <mailSettings>
            <smtp deliveryMethod="Network" >
                <network host="smtp.gmail.com" port="587" userName="an-email@gmail.com" password="********" enableSsl="true" defaultCredentials="false" />
            </smtp>
        </mailSettings>
    </system.net>
</configuration>

编辑:由于您的 web.config 中应该已经有 configuration 元素,因此请务必仅复制/粘贴 system.net 元素,我通常将其直接放在 system.web 下方

【讨论】:

    【解决方案2】:

    试试下面的,

      var smtp = new SmtpClient
                        {
                            Host = "smtp.gmail.com",
                            Port = 587,
                            EnableSsl = true,
                            DeliveryMethod = SmtpDeliveryMethod.Network,
                            UseDefaultCredentials = false,
                            Credentials = new NetworkCredential(<type your email address>, <type your password>)
                        };
                        using (var message = new MailMessage(<type your email address>, toAddress)
                        {
                            Subject = <subject>,
                            Body = <body>
                        })
                        {
                            smtp.Send(message);
                        }
    

    【讨论】:

      【解决方案3】:

      Gmail SSL 端口是 465,如此处所示...http://support.google.com/mail/bin/answer.py?hl=en&answer=13287

      【讨论】:

      【解决方案4】:

      https://stackoverflow.com/a/489594/707000

      “上述答案不起作用。您必须设置“DeliveryMethod = SmtpDeliveryMethod.Network”,否则它会返回“客户端未通过身份验证”错误。此外,设置超时总是一个好主意。”

      【讨论】:

      • 它说“操作已超时。”.
      • 您确定您没有被防火墙或互联网过滤器阻止吗?
      【解决方案5】:

      快速搜索显示大多数示例没有明确设置mailClient.UseDefaultCredentials = false; 尝试删除此行并查看它是否有效。

      在我看到的示例中,他们同时使用了端口 587 和 25。

      【讨论】:

      • 我会遵循其他答案的建议,看看是否能解决错误。
      猜你喜欢
      • 2013-04-02
      • 2011-08-01
      • 1970-01-01
      • 2016-11-02
      • 2012-08-20
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多