我正在使用一个使用 System.Net.Mail 的简单邮件发件人类。我需要更新我的应用程序,以便不同的用户可以通过它发送电子邮件(使用相同的 smtp 帐户),但“发件人”地址应该是导致发送电子邮件的用户的地址。我尝试设置 MailMessage 的 From 属性,并将发件人地址发送到 MailMessage 的构造函数中,但这些都没有奏效。我确信我遗漏了一些简单的东西或者不理解邮件 API 的工作原理。谁能帮忙?
这里是我的 MailSender 类,它基本上包装了 MailMessage、NetworkCredential 和 SmtpClient 以提供一个简单的邮件发送接口(interface)。
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 的建议。
