【发布时间】:2013-03-25 23:39:34
【问题描述】:
研究这个问题已经有一段时间了,但还没有找到任何解决方案。
我可以使用我的常规 gmail 帐户(使用 smtp.gmail.com 作为我的主机和端口 587)从网站发送电子邮件。
我目前的问题是发送邮件没有问题。我不再收到错误。但是,电子邮件永远不会发送。有人有什么想法吗?
代码如下:
配置:
<smtp from="admin@domain.com">
<network host="smtp.gmail.com" password="password" userName="admin@domain.com" port="587"/>
</smtp>
代码:
public void Send() {
bool bDev = ConfigurationManager.AppSettings["dev"] == "true";
MailMessage oMsg = new MailMessage();
foreach (string sAddress in To) {
if (sAddress != "") oMsg.To.Add(sAddress);
}
oMsg.From = ((FromName == null) || (FromName == "")) ?
new MailAddress(From) :
new MailAddress(From, FromName);
oMsg.Subject = Subject;
oMsg.Body = Body.ToString();
oMsg.IsBodyHtml = true;
oMsg.BodyEncoding = Encoding.UTF8;
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = (new int[] { 587, 465 }).Contains(smtp.Port);
smtp.Send(oMsg);
}
【问题讨论】:
-
您的班级中有来自、FromName 和 Subject 的公共字段/属性吗?我有非常相似的问题。不要使用您的 web.config 文件来指定您的网络设置,而是用 C# 代码(在您的 Send 方法中)重写它并查看问题是否仍然存在。
-
是的。只是对它们进行硬编码并重新测试。同样的问题。
-
请保持您的代码原样,但使用不同的 SMTP 客户端进行测试(获取一个新帐户 POP/SMTP 帐户(Yahoo、GMX),以排除问题是您的代码、GMAIL 还是其他!
-
在您尝试重构代码之前,请检查是否有
Priority属性与您发送代码的方式以及何时设置它有关..set it toHight ` 例如看到它被推得更快。Hard coding is not a good practice btw -
用非 Gmail smtp 服务器测试过,它发送得很好。在我的代码中进行了更改以添加第二个电子邮件地址(我的个人 gmail 帐户),并且两个地址都成功收到了它。然后我删除了个人 gmail 帐户并重新测试,它开始正常工作。很奇怪。