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