【问题标题】:Sending mail through C# with gmail not working onlinegmail无法在线通过C#发送邮件
【发布时间】:2013-10-28 05:50:12
【问题描述】:

我正在尝试通过 gmail 发送邮件。我在本地主机上测试时发送邮件成功,但是当我在线上传时这不起作用。下面是我用来发送电子邮件的代码。有什么帮助吗?

MailMessage mm = new MailMessage();
            mm.From = new MailAddress("donotreply@gmail.com");
            mm.Subject = "Test";
            mm.To.Add(new MailAddress(email));
            mm.Body = "Test";
            mm.IsBodyHtml = true;
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.EnableSsl = true;
            client.UseDefaultCredentials = true;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Credentials = new System.Net.NetworkCredential("donotreply@gmail.com", "password");
            client.Send(mm);

【问题讨论】:

  • 您在哪里在线上传文件?可能是防火墙阻止了该特定端口。 (587)
  • 难道你不能从服务器获取任何类型的日志吗?就像安全日志一样。
  • 不工作不是一个好的错误描述。查看错误,它应该包含问题所在的提示。猜测可能是 smtp 服务根本没有运行。
  • 我不知道错误,因为我有一个错误页面,如果我删除它,我仍然会在网络配置自定义错误中得到一些东西

标签: c# smtp gmail mailmessage


【解决方案1】:

您的问题看起来可以通过类似的 StackOverflow 问题来回答:

Sending email in .NET through Gmail

如果这不能回答您的所有问题,请告诉我。

【讨论】:

  • 使用该答案的代码后仍然无法正常工作:/在本地主机上工作但不在线
【解决方案2】:

在你上面的当前代码中,你首先设置:

client.UseDefaultCredentials = true

它告诉框架使用默认凭据,然后您继续定义您的自定义凭据:

 client.Credentials = new System.Net.NetworkCredential("donotreply@gmail.com", "password");

它在尝试发送邮件时不会使用它,因为您已经在上面两行告诉它使用默认凭据。尝试设置

client.UseDefaultCredentials = false

【讨论】:

  • 您可能想详细说明这段代码将如何回答这个问题。就像现在一样,它已被自动标记为低质量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2019-02-04
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 2018-09-13
相关资源
最近更新 更多