代码之家  ›  专栏  ›  技术社区  ›  MAK

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

  •  1
  • MAK  · 技术社区  · 14 年前

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

    这里是我的MailSender类,它基本上包装了 邮件 , NetworkCredential SmtpClient 提供一个简单的邮件发送接口。

    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;
        }
    }
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   MAK    14 年前

    我刚通过另一个SMTP服务器测试找到了答案。这实际上是由于GMail不允许任何其他发件人地址造成的。这可以与其他SMTP服务器一起正常工作。

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

        2
  •  2
  •   Josu Lekaroz    5 年前

    这个线程有点老了,但我刚刚发现,要使用Google服务器在from字段中使用不同的地址从脚本发送电子邮件,必须将该地址添加到用于身份验证的Gmail帐户中的send As列表中。 因此,按照提供的3个简单步骤,登录到用于针对Google服务器进行身份验证的用户的Gmail帐户,转到Config,Accounts并将所需的from addresses添加到Send As列表中。 解决了我的问题 希望能帮上忙 若苏埃

        3
  •  1
  •   Yuval    8 年前

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

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