Skip to main content
 首页 » 编程设计

c#之使用 C# 为通过 Gmail 发送的邮件设置不同的 "From"地址

2024年01月29日35yxwkf

我正在使用一个使用 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 的建议。