什么可能导致使用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记录都是正确的,并且电子邮件似乎正常工作,但后台仍有变化