已经研究了这个问题很长一段时间了,但还没有找到任何解决方案。
我可以使用我的常规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);
}
答案 0 :(得分:1)
我添加了第二个To地址并恢复了测试。我开始收到两个帐户的电子邮件。然后在删除第二个地址后,它开始工作。
我遇到了一个新问题,我的回复地址使用的是发件人地址。所以,我添加了额外的代码,将回复地址设置为我的表单中人员电子邮件地址的回复地址。
代码
if (!string.IsNullOrEmpty(ReplyToAddress))
oMsg.ReplyTo = new MailAddress(ReplyToAddress);
但是,我遇到了Gmail的问题,忽略了我定义的回复地址,并使用了我的收件人地址。显然这是设计的。我找不到有关如何覆盖此设置的任何有用信息,因此我做了一个可能对其他人有帮助的解决方法。
我使用gmail(website@gmail.com)创建了一个通用电子邮件地址并设置了一个过滤器。来自admin@domain.com的任何电子邮件都需要重定向到admin@domain.com。
现在,当我运行我的测试时,所有的电子邮件都会进入他们应该去的地方并且对字段的回复非常有效。
不是最好的解决方案,因为它让我想起每次遇到这个问题时都要设置一个新帐户,但它是一个暂时有效的解决方案,直到出现更好的替代方案。
答案 1 :(得分:0)
完全相同的问题,没有发生错误但也没有发送电子邮件。 Google有时会阻止您的帐户(通常在测试期间)。尝试登录gmail帐户并查看其内容。
UPD1:还要在gmail中检查你发送的文件夹。
UPD2:还要确保“发件人”电子邮件与您的Gmail电子邮件地址相同。