好的,我已经使用以下脚本一年多来从我的主机发送电子邮件(通过gmail),它工作得很好( Settings.Get()只返回字符串):
public class Email : SmtpClient
{
public MailMessage Message { get; private set; }
public Email(string to, string from, string subject, string body) : base(Settings.Get("smtp"), 25)
{
this.EnableSsl = Convert.ToBoolean(Settings.Get("ssl"));
if(this.EnableSsl)
this.Credentials = new System.Net.NetworkCredential(Settings.Get("gm"), Settings.Get("gmp"));
this.Message = new MailMessage(from, to, subject, body);
}
public void Send()
{
try { this.Send(Message); }
catch (Exception ex) { throw ex; }
}
}
但是,从昨天开始,我收到了这个错误:
错误:服务器不支持安全连接。
当然,我的主人当然认为这不是他们的错,但我没有改变任何事情。此外,它仍然可以在我的本地和测试机器上正常工作。知道可能导致这种情况的原因所以我可以告诉他们解决这个问题吗?
谢谢......这让我疯了!
答案 0 :(得分:5)
您使用的是什么SMTP服务器和端口?如果您直接连接到smtp.gmail.com以发送ssl邮件,则需要使用端口465或587。
看起来您正在使用端口25,您确定Settings.Get("ssl")
返回false吗?
答案 1 :(得分:0)
检查你的事件日志,也许握手beetwen你的电脑和服务器不工作。或证书没有被下载或它可能包含错误可能是从gmail发出的奇怪的事情
答案 2 :(得分:0)
指定要使用的端口587也为我解决了这个问题 -
错误:服务器不支持安全连接。
我工作的公司创建了一个Windows服务,它可以完成一些工作,然后从gmail发送一封电子邮件。在一开始它发送电子邮件就没问题了。在Vista计算机上安装服务后,我们发现它不会发送电子邮件。一旦我们在Windows 2008服务器上安装它,就会发生同样的事情。我们甚至开始注意到它是少量的XP机器。一旦我们将端口更改为587,它就会再次正常工作并发送电子邮件。
以下是一些示例代码,它们适用于我们尝试的所有计算机(XP,Vista,Server 2008)。
Dim client As New Net.Mail.SmtpClient("smtp.gmail.com")
client.Port = 587
client.EnableSsl = True
client.UseDefaultCredentials = False
client.Credentials = loginInfo
client.Send(mm)
答案 3 :(得分:0)
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("xx@xx.com", "password");
SmtpServer.EnableSsl = true;
答案 4 :(得分:0)
更改:
SmtpServer.EnableSsl = true;
收件人:
SmtpServer.EnableSsl = false;
这将解决问题。