【问题标题】:Sending email from web site using Google Apps account使用 Google Apps 帐户从网站发送电子邮件
【发布时间】: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 to Hight ` 例如看到它被推得更快。 Hard coding is not a good practice btw
  • 用非 Gmail smtp 服务器测试过,它发送得很好。在我的代码中进行了更改以添加第二个电子邮件地址(我的个人 gmail 帐户),并且两个地址都成功收到了它。然后我删除了个人 gmail 帐户并重新测试,它开始正常工作。很奇怪。

标签: c# gmail


【解决方案1】:

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

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

代码

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

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

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

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

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

【讨论】:

  • 我还可以从域帐户中创建另一个电子邮件地址,然后从那里转发。如果你有这个选项,那就更好了。
【解决方案2】:

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

UPD1:同时检查您在 gmail 中发送的文件夹。

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

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2011-01-07
    • 2010-10-19
    • 1970-01-01
    • 2016-02-18
    • 2013-04-13
    相关资源
    最近更新 更多