我有一个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。
答案 0 :(得分:0)
您正在代表您在Google的帐户使用Google smtp服务器发送电子邮件。您无法将Google smtp与非Google帐户一起使用到发件人。即使您通过Gmail或其他电子邮件发送常规电子邮件,也无法修改发件人。您发布的此代码中的行为相同。
答案 1 :(得分:0)
问题不在于From param,而在于ReplyTo。由于两个参数都是从同一个变量(而不是字符串)设置的,所以当它设置在我的域之外时它不起作用。
删除ReplyTo设置解决了问题。