【发布时间】:2015-10-11 16:52:21
【问题描述】:
我正在尝试通过 SmtpClient 连接到 iCloud
我使用的设置如下:
服务器名称:smtp.mail.me.com
需要 SSL:是
如果您在使用 SSL 时看到错误消息,请尝试改用 TLS 或 STARTTLS。
端口:587
需要 SMTP 身份验证:是 - 使用相关的用户名和密码
如果我使用 SSL,我会收到“由于意外的数据包格式而导致握手失败”
如果我不使用 SSL,Visual Studio 调试器会挂起连接。
我认为问题在于我没有告诉 SmtpClient 使用 tls,但我找不到有关如何执行此操作的文档。
代码如下:
using (var client = new SmtpClient()) {
client.Timeout = 1000 * 20;
//client.Capabilities.
client.AuthenticationMechanisms.Remove ("XOAUTH2");
client.Connect("SMTP.mail.me.com", 587, false); //dies here
//client.Connect(servername, port, useSsl);
//can I set tls or starttls here??
client.Authenticate(username, password);
client.Send(FormatOptions.Default, message);
}
我可以手动设置 TLS 或 StartTLS。我确实尝试过的一件事是以下,但它似乎不起作用
client.Connect(new Uri("smtp://" + servername + ":" + port + "/?starttls=true"));
感谢您对此的任何帮助。
【问题讨论】:
-
如果你说你需要
SSL,你为什么要为useSSL标志传递false? -
@Rob 我尝试过使用 true,但由于数据包格式意外,握手失败。 iCloud 建议:“如果您在使用 SSL 时看到错误消息,请尝试改用 TLS 或 STARTTLS。”