0

一直在研究这个问题,但还没有找到任何解决方案。

我可以使用我的常规 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);
    }
4

2 回答 2

1

我添加了第二个地址并恢复测试。我开始收到两个帐户的电子邮件。然后在删除第二个地址后,它开始工作。

我遇到了一个新问题,我的回复地址使用的是发件人地址。因此,我添加了额外的代码,将回复地址设置为表单中此人的电子邮件地址。

代码

    if (!string.IsNullOrEmpty(ReplyToAddress))
        oMsg.ReplyTo = new MailAddress(ReplyToAddress);

但是,我遇到了 Gmail 忽略我定义的回复地址并使用我的发件人地址的问题。显然这是设计使然。我找不到有关如何覆盖此设置的任何有用信息,因此我做了一个变通方法,可能证明对遇到此问题的其他人有帮助。

我使用 gmail (website@gmail.com) 创建了一个通用电子邮件地址并设置了一个过滤器。来自 admin@domain.com 的任何电子邮件都需要重定向到 admin@domain.com。

现在,当我运行我的测试时,所有的电子邮件都在它们应该去的地方,并且对字段的回复效果很好。

不是最好的解决方案,因为它涉及到我每次遇到这个问题时都要记住设置一个新帐户,但它是一个暂时有效的解决方案,直到出现更好的替代方案。

于 2013-03-25T15:39:34.057 回答
0

有完全相同的问题,没有发生错误,但也没有发送电子邮件。Google 有时会阻止您的帐户(通常在测试期间)。尝试登录 gmail 帐户并查看它的内容。

UPD1:还要检查您在 gmail 中发送的文件夹。

UPD2:还要确保“发件人”电子邮件与您的 gmail 电子邮件地址相同。

于 2013-03-25T14:38:01.067 回答