出于某种原因,无论是公认的答案还是其他任何答案都不适用于我的"Sending email in .NET through Gmail".他们为什么不工作?

更新:我try 了另一个问题中的所有答案(接受或其他),但没有一个有效.

我只想知道它是否适用于其他任何人,否则谷歌可能已经改变了一些东西(以前就发生过).

当我try 使用SmtpDeliveryMethod.Network的这段代码时,我在发送(Message)时很快收到一个SmtpException.信息是

SMTP服务器需要安全连接,或者客户端未通过身份验证.

服务器响应为:

5.5.1需要认证.在"<"了解更多信息——说真的,到此为止.

UPDATE:

这是我很久以前问过的一个问题,公认的答案是我在不同项目中使用过很多次的代码.

我采纳了本文和其他EmailSender项目中的一些 idea ,创建了一个EmailSender project at Codeplex.它是为可测试性而设计的,支持我最喜欢的SMTP服务,如GoDaddy和Gmail.

推荐答案

CVertex,一定要判断你的代码,如果没有发现任何东西,就发布它.我只是在测试ASP上启用这个.NET网站,我一直在工作,它的工作.

事实上,在某个时刻,我的代码出现了问题.直到我在一个控制台程序上有了一个更简单的版本,并看到它在工作(正如你所担心的,Gmail端没有变化),我才发现它.下面的代码与您提到的示例一样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

我还使用了多种网络技术.配置、http://msdn.microsoft.com/en-us/library/w355a94k.aspx和代码(因为配置文件()中没有匹配的EnableSsl).

2021年更新

默认情况下,你还需要在你的gmail设置页面:谷歌中启用"不太安全的应用"的访问权限.com/settings/security/lessecureapps.如果您遇到异常"服务器响应为:5.5.1需要身份验证",则这是必要的.感谢@Ravendarksky

.net相关问答推荐

通过交互服务器渲染模式和流渲染的组合防止双重渲染

使用托管身份而不是检测密钥配置Application Insights

如果只有一个 : 存在于字符串中,则提取冒号后的内容

.NET 4.5 项目未在 Visual Studio 2022 中编译

如何知道变量是否只是指向另一个对象的pointer或者它是否可以独立存在

查找所有源硬编码字符串

C#.Net 中的可选返回

从 switch 块中跳出 foreach 循环

log4net 与 TraceSource

在 C# DllImport 中使用 32 位或 64 位 dll

来自奥尔森时区的 .NET TimeZoneInfo

为什么需要 XmlNamespaceManager?

控制台应用程序的退出时

多个等待与 Task.WaitAll - 等效?

System.String.Copy 在 .NET 中有什么用?

从 OpenFileDialog 路径/文件名中提取路径

从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的无效转换

清除文件内容

如何隐藏 WPF ListView 的标题?

如何将我的应用程序窗口置于最前面?