SMTP邮件仅在内部发送

时间:2015-08-13 10:25:37

标签: c# winforms email smtp gmail

我有一个c#函数,可以通过SMTP从Gmail帐户向win app发送电子邮件。

它可以工作,但只有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“已发送”框中。只有邮件不会发送到recipient@myGoogleDomain.com。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

删除ReplyTo设置解决了问题。