使用C#为通过Gmail发送的邮件设置不同的“发件人”地址

我正在使用一个使用System.Net.Mail的简单邮件发件人类。 我需要更新我的应用程序,以便各种用户可以通过它发送电子邮件(使用相同的smtp帐户),但“发件人”地址应该是导致它被发送的用户。 我尝试设置MailMessageFrom属性,并将from地址发送到MailMessage的构造函数,但是那些工作的鼻子。 我确信我遗漏了一些简单或不理解邮件API如何工作的东西。 有人可以帮忙吗?

这里我的MailSender类基本上包装了MailMessageNetworkCredentialSmtpClient以提供一个简单的邮件发送界面。

 class MailSender { private NetworkCredential credential; private String SenderAddress; private SmtpClient client; public MailSender(String ServerURL, String account, String password, String FromAddress = null, int port = -1, bool UseSSL = true) { if (port > 0) { client = new SmtpClient(ServerURL, port); } else { client = new SmtpClient(ServerURL); } credential = new NetworkCredential(account, password); client.UseDefaultCredentials = false; client.EnableSsl = UseSSL; client.Credentials = credential; if (FromAddress != null) { SenderAddress = FromAddress; } else { SenderAddress = account; } } public bool SendMessage(String to, String subject, String body) { try { MailMessage message = new MailMessage(SenderAddress, to, subject, body); message.From = new MailAddress(SenderAddress, "tester"); message.IsBodyHtml = true; client.Send(message); } catch { return false; } return true; } } 

我刚刚通过另一台SMTP服务器测试找到了答案。 这实际上是由GMail不允许任何其他地址引起的。 这适用于其他SMTP服务器。

感谢leppie,Mikael Svenson和smirkingman的建议。

Gmail不允许任何其他地址。 它可能会对您有所帮助,您可以通过以下方式更改重播:

mail.ReplyTo =新邮件地址(“SomeOtherAddress@mycompany.com”);