什么可能导致使用C#从Gmail SMTP发送的邮件未到达 – 不会抛出任何exception
我正在尝试通过我的Google Apps电子邮件帐户发送邮件。 这是在我自己的域上设置的,并且通过Web界面和outlook都可以正常工作。
但是,我正在尝试使用C#从网页发送电子邮件,我没有例外,一切似乎都很顺利,但电子邮件似乎永远不会到达:
MailMessage msg = new MailMessage("no-reply@xxxx.co.uk", "dan@xxxx.co.uk"); SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.Credentials = new NetworkCredential("no-reply@xxxx.co.uk", "xxxxxxxxx"); smtp.EnableSsl = true; msg.IsBodyHtml = true; msg.Body = body; smtp.Send(msg);
正文是我之前在代码中生成的字符串。 据我所知,如果在Gmail上实际连接到SMTP服务器时出现问题,我会抛出exception。
什么可能导致这不起作用的任何想法? 与其他人的例子相比,我能看到的唯一不同的是,我将机构设置为HTML,而我是从Google Apps帐户而不是@ gmail.com帐户发送的。
谷歌应用程序本身都完全配置和工作,我已经设置了很多次,所以我知道它不太可能是一个问题。
我还尝试在端口25上发送,因为这是您在配置Outlook以从Gmail帐户发送时使用的内容。
两者都有相同的结果,没有exception抛出,但电子邮件永远不会到来。 使用Google Apps for Gmail,发件人和收件人的电子邮件都在我的域中。
编辑:
另外我应该提一下,我已经使用这两个帐户登录,并且在他们的设置中都启用了IMAP和POP等。
新发现
这是一个奇怪的
如果我手动发送邮件:
no-reply@mydomain.com to dan@mydomain.com - Then it works But if I send it through code this way...it doesn't work...
如果我通过代码发送以下内容它确实有效:
no-reply@mydomain.com to me@gmail.com or me@ntlworld.com - This works through code!
然后我会认为这意味着dan@mydomain.com接收消息的问题……但是它接收到我尝试过的任何google,hotmail或ntlworld电子邮件地址手动发送的任何消息。
因此,Google Apps帐户无法接收通过代码发送的电子邮件(不太可能)或其他内容在此处播放
如果出现问题,服务器可能会以静默方式丢弃您的消息。 – 尽管有任何规格说不然。
尽管被“交付”,但消息可能在以太网中丢失。
SMTP服务器可能正在应用严格过滤,并可能另外要求您的发件人和目标电子邮件地址“正确”匹配
我建议尝试使用其他SMTP主机进行检查。 🙂
Dan,看看这个用C#通过Gmail SMTP服务器发送电子邮件
希望这可以帮助
设置Google Apps时,即使MX记录全部正常用于手动向其他帐户发送邮件,也可能存在问题。
答案是在设置MX记录后等待12-24小时,即使其他一切工作正常。
如果你没有收到任何例外,那么对我来说这是目前唯一的答案。
一切都正常。 尽管我的DNS上的所有MX记录都是正确的,并且电子邮件似乎正常工作,但后台仍有变化