【问题标题】:Send mail smtp gmail from address showing the gmail address从显示 gmail 地址的地址发送邮件 smtp gmail
【发布时间】:2013-03-30 23:23:30
【问题描述】:

在 C# 中,我有一种通过 gmail 帐户发送电子邮件的方法。 当我在 Microsoft Outlook 中打开电子邮件时,发件人地址显示为 gmail 地址,而不是我在标题中使用的 strFromAddress。

SmtpClient smtp = new SmtpClient();
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.UseDefaultCredentials = true;
        smtp.EnableSsl = true;
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.Credentials = new NetworkCredential("***@gmail.com", "*****");

            var strFromAddress = "no-repl@demuynck-printing.be";
            var strToAddress = "sander@demuynck-media.be";
            var strSubject = "Album: '" + lbltitel.Text + "' bestelling";
            var strBody = "<html><head>";
            // new instance of MailMessage
            MailMessage mailMessage = new MailMessage();

            // Sender Address
            mailMessage.From = new MailAddress(strFromAddress);
            // mailMessage.Headers("Selexion Clix Demuynck <no-reply@demuynck-printing.be>");
           // mailMessage.Bcc.Add(new MailAddress("no-reply@demuynck-printing.be"));

            // Recepient Address
            mailMessage.To.Add(new MailAddress(strToAddress));
            mailMessage.Headers.Add("Reply-To", "info@demuynck-printing.be");
            // Subject 
            mailMessage.Subject = strSubject;

            // Body
            mailMessage.Body = strBody;

            // format of mail message
            mailMessage.IsBodyHtml = true;
            // new instance of Smtpclient

                smtp.Send(mailMessage);

【问题讨论】:

  • AFAIK 此邮件无法发送。您要求 gmail SMTP 服务将邮件从不属于 gmail 的地址发送到外部地址。如果我是对的,这在世界上的每个 SMTP 服务器上都是不允许的(垃圾邮件服务器除外)
  • 旁注:SmtpClientIDisposable,应该像这样使用:using (var smtp = new SmtpClient()) { ... }
  • 可以不应该。虽然在 using 语句中包装 Disposable 对象通常被认为是一种好的做法,但情况并非总是如此。有时您需要明确控制对象的处理方式和时间。 - 尽管我同意在这种情况下使用 using 语句是明智的:-)

标签: c# email gmail sendmail document-body


【解决方案1】:

只需像这样在 MailAddress 上设置 displayname 属性:

MailAddress fromAddress = new MailAddress("user@domaina.com","no-reply@domainb.com");

【讨论】:

    【解决方案2】:

    GMail 会将“发件人”地址更改为用于登录 SMTP 服务器的帐户,除非验证“发件人”字段中使用的电子邮件地址属于同一所有者。因此,在您的 gmail 首选项中,只需添加并验证此特定地址即可。

    【讨论】:

      【解决方案3】:

      发生这种情况是因为 Google 违反了 SMTP 协议。这里有一篇详细的文章:http://lee-phillips.org/gmailRewriting/

      史蒂夫的评论不正确;经过身份验证的发件人应该能够设置任何 From: 标头。

      【讨论】:

        猜你喜欢
        • 2014-12-28
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        • 2011-04-10
        • 2016-12-23
        • 2015-03-02
        • 1970-01-01
        • 2018-09-21
        相关资源
        最近更新 更多