SMTP邮件只在内部发送

本文关键字:在内部 SMTP | 更新日期: 2023-09-27 18:07:49

我有一个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

SMTP邮件只在内部发送

您代表您在Google的帐户使用Google smtp服务器发送电子邮件。你不能使用谷歌smtp与非谷歌帐户。即使你在Gmail或其他电子邮件中发送常规电子邮件,你也不能从修改

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

删除ReplyTo设置解决了问题。