Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中通过SMTP发送电子邮件时出错,这在2017年仍然有效吗?_C#_Email_Smtp - Fatal编程技术网

在C#中通过SMTP发送电子邮件时出错,这在2017年仍然有效吗?

在C#中通过SMTP发送电子邮件时出错,这在2017年仍然有效吗?,c#,email,smtp,C#,Email,Smtp,在广泛研究了该问题,特别是应用了stackoverflow上类似问题的建议后,下面的代码仍然返回错误“”System.Net.Mail.SmtpException:语法错误,无法识别命令。服务器响应为:连接在…被拒绝 我已经尽了一切可能 在客户端>上,我已更改了smtp属性(排列)等 在服务器>上,我降低了gmail帐户的安全性,禁用了验证码等 我观察到,stackoverflow上的类似问题大多出现在30多年前,因此,gmail是否可能不再支持通过C#的SMTP方法,同样地,gmail API

在广泛研究了该问题,特别是应用了stackoverflow上类似问题的建议后,下面的代码仍然返回错误“”System.Net.Mail.SmtpException:语法错误,无法识别命令。服务器响应为:连接在…被拒绝

我已经尽了一切可能
在客户端>上,我已更改了smtp属性(排列)等
在服务器>上,我降低了gmail帐户的安全性,禁用了验证码等

我观察到,stackoverflow上的类似问题大多出现在30多年前,因此,gmail是否可能不再支持通过C#的SMTP方法,同样地,gmail API也被弃用了

另外,请查找代码中提供的gmail帐户原始密码,以确认此问题是通用的还是与此gmail帐户无关的


谢谢

验证此代码工作正常:

var fromAddress = new MailAddress("YOUREMAIL@gmail.com", "YOUREMAIL@gmail.com");
var toAddress = new MailAddress("YOUREMAIL@gmail.com", "YOUREMAIL@gmail.com");
const string fromPassword = "YOURPASSWORD";
const string subject = "YOUREMAIL@gmail.com";
const string body = "YOUREMAIL@gmail.com";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

我不喜欢包括你的个人信息,即使你有,所以我已经删除了它们。显然,用正确的详细信息替换电子邮件和密码。

从酒店的无线网络切换到办公网络后,它终于可以工作了……网络连接类型在通过SMTP发送电子邮件时起到了一定的作用。

Gmail仍然支持SMTP。您是否在Gmail个人资料中启用了不太安全的应用程序?请参见我的回答:是的,我启用了不太安全的应用程序,但在应用您的建议后仍返回错误,请尝试使用此帐户信息(“demo77377@gmail.com“|“aabbccdde1!”)因为我觉得gmail可能对他们的SMTP进行了一些更改。谢谢@EqualskI测试了这个,效果很好,请查看收件箱中的电子邮件。我已发布了删除了私人详细信息的代码。确认后,我在收件箱中看到了该电子邮件,但在使用正确的详细信息替换您的代码片段后,我仍然收到错误“服务器响应为:连接被拒绝”,有时还出现错误“服务器不支持安全连接”,但当我注释掉enableSsl时,我收到错误“邮箱不可用。服务器响应为5.5.0无效EHLO/HELO域”。既然代码是从您的角度工作的,您认为我的系统会出现什么问题。谢谢@EqualskWhat版本的。你的目标是什么?如果您使用的是4.5或更早版本,则可能需要启用TLS 1.2。我使用的是Visual Studio 2015 Professional,我的版本是.NET Framework 4.5.2TLS 1.2。默认情况下,只有在4.6中才启用TLS 1.2。在4.5中,您可以在代码中或通过注册表打开。这个博客有一些信息,刚将console项目升级到“.NETFramework 4.6”,但仍然遇到相同的错误…我该怎么办?谢谢@Equalsk
var fromAddress = new MailAddress("YOUREMAIL@gmail.com", "YOUREMAIL@gmail.com");
var toAddress = new MailAddress("YOUREMAIL@gmail.com", "YOUREMAIL@gmail.com");
const string fromPassword = "YOURPASSWORD";
const string subject = "YOUREMAIL@gmail.com";
const string body = "YOUREMAIL@gmail.com";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}