c# - 无法使用隐式 SSL smtp 服务器发送电子邮件

标签 c# ssl smtp smtpclient

我通过复制此 KB article 中的代码编写了一个示例程序就用户信息而言,进行一些小的编辑。它使用已弃用的 .NET 库 System.Web.Mail 来执行此操作,因为新的 System.Net.Mail 不支持隐式 SSL。我在端口 465 上使用 Google smtp 服务器对其进行了测试,这是他们的隐式电子邮件端口,一切正常。然而,当我把它交给客户在他的网络上进行测试时,没有发送/接收任何东西,这是错误:

2013-03-07 15:33:43 - The transport failed to connect to the server.
2013-03-07 15:33:43 -    at System.Web.Mail.SmtpMail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
2013-03-07 15:33:43 -    at System.Web.Mail.SmtpMail.CdoSysHelper.Send(MailMessage message)
2013-03-07 15:33:43 -    at System.Web.Mail.SmtpMail.Send(MailMessage message)

我对电子邮件 SSL 不是很精通,所以这是我对根本原因的可能理论:

假设他使用了正确的 smtp 服务器和正确的端口(SSL 端口),我想知道是否有以下任何原因:

  1. 他们在邮件服务器上使用 SSL,但他没有在他运行我的程序的机器上安装证书,即使他在同一个域中并使用与发件人相同的电子邮件域。

  2. 他们使用 SSL,但他们可能使用 NTLM 或匿名身份验证,而我的程序使用基本身份验证。

对不起,如果我提供的信息很少,因为我自己在这方面很陌生,所以我还在研究更多。

您知道我可以采取哪些步骤来确保我的小测试程序可以使用隐式 SSL 电子邮件服务器的 smtp 服务器进行发送吗?

编辑:我确实在我的代码中添加了以下行以表明我正在使用 SSL。

oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");

最佳答案

也许现在回答太晚了,但请查看 https://sourceforge.net/p/netimplicitssl/wiki/Home/

可以向465端口发送邮件 无需修改您的代码,就这么多。

来自项目的维基页面:

var mailMessage = new MimeMailMessage();
mailMessage.Subject = "test mail";
mailMessage.Body = "hi dude!";
mailMessage.Sender = new MimeMailAddress("you@gmail.com", "your name");
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MimeMailAddress("yourfriend@gmail.com", "your friendd's name")); 
mailMessage.Attachments.Add(new MimeAttachment("your file address"));
var emailer = new SmtpSocketClient();
emailer.Host = "your mail server address";
emailer.Port = 465;
emailer.EnableSsl = true;
emailer.User = "mail sever user name";
emailer.Password = "mail sever password" ;
emailer.AuthenticationMode = AuthenticationType.PlainText;
emailer.MailMessage = mailMessage;
emailer.OnMailSent += new SendCompletedEventHandler(OnMailSent);
//Send email
emailer.SendMessageAsync();

// A simple call back function:
private void OnMailSent(object sender, AsyncCompletedEventArgs asynccompletedeventargs)
{
    Console.Out.WriteLine(asynccompletedeventargs.UserState.ToString());
}

关于c# - 无法使用隐式 SSL smtp 服务器发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284178/

相关文章:

.net - .NET Framework 2.0 是否支持 TLS1.1?

java - 从 ColdFusion 启动测试 SMTP 服务器

python - SMTPAuthenticationError : (535, b'5.7.8 Django 生产中不接受用户名和密码?

codeigniter - 使用CodeIgniter发送电子邮件时出错

c# - 如何在 C# .Net 中显示数据库中的 Highcharts

c# - 在 WinForms 中使用 BindingList<> 处理 Deleted 标志

tomcat - HTTPS 通信失败,jdk 1.6(32 位客户端)与 jdk 1.8(64 位)服务器 : READ: Unknown-3. 3 警报,长度 = 2

security - 使用 Jmeter 记录 Gmail

c# - 如何连接 xaml 和 xaml.cs 文件

c# - 使用 C# 为我自己的项目创建我自己的插件