SMTP 邮件仅在内部发送

SMTP mail only sends internally

我有一个 c# 函数,可以通过 SMTP 从 gmail 帐户将电子邮件从 win 应用程序发送给我。

有效,但前提是 FROM 参数是内部参数。

当我添加外部地址时,它运行没有错误,但电子邮件从未到达我的邮箱。

我注意到该网站上的几篇帖子都存在类似问题,但与大多数帖子不同的是,其他人似乎都会收到某种错误消息。

MailMessage mail = new MailMessage();
using (SmtpClient SmtpServer = new SmtpClient(smtp.gmail.com))
{
    mail.From = new MailAddress("you@myGoogleDomain.com"); //This works
    //mail.From = new MailAddress("me@somewhere.com"); //This does not work
    mail.To.Add("recipient@myGoogleDomain.com");
    mail.Subject = "Mail Subject";
    mail.Body = mailBody;
    mail.ReplyTo = new MailAddress("me@myGoogleDomain.com");
    mail.CC.Add(new MailAddress("me@myGoogleDomain.com")); 
    mail.IsBodyHtml = true;
    SmtpServer.Port = 587; //I've also tried 465
    //SmtpServer.UseDefaultCredentials = false; //This does not make a difference.
    SmtpServer.Credentials = new System.Net.NetworkCredential("myaccount@myGoogleDomain.com", "Pass123");
    SmtpServer.EnableSsl = true; //I've also tried false

    //Add attachments
    ...    

    //Send the mail
    SmtpServer.Send(mail);
}

更多信息:我注意到电子邮件位于 myaccount@myGoogleDomain.com 'Sent' 框中。只是没有邮件到达 recipient@myGoogleDomain.com.

您正在代表您在 Google 中的帐户使用 Google smtp 服务器发送电子邮件。您不能将 Google smtp 与非 google 帐户一起使用到 From。即使您在 Gmail 或其他电子邮件中发送常规电子邮件,您也无法修改 From。您发布的这段代码中的行为相同。

问题不在于 From 参数,而在于 ReplyTo。由于两个参数都是从同一个变量(而不是字符串)设置的,所以当它被设置到我的域之外时它不起作用。

删除 ReplyTo 设置解决了问题。