如何通过Gmail SMTP发送电子邮件时,在“发件人”字段中使用任何电子邮件地址?

问题描述 投票:7回答:2

我正在尝试使用以下代码在C#中使用gmail SMTP发送电子邮件

MailMessage message = new MailMessage();
message.To.Add("my email");
message.Subject = "subject";
message.From = new MailAddress("any email");
message.Body = "body";

message.Attachments.Add(new System.Net.Mail.Attachment(path));
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("my user", "my pass");

smtp.Send(message);

[当我收到电子邮件时,FROM]字段用my user填充。我正在使用UseDefaultCredentials作为false。当我查看结果时,FROM字段充满了my userFROM字段不应该用any email填充吗?如何使用any email作为发件人发送电子邮件?

c# gmail smtpclient
2个回答
4
投票

运行我的代码段:

Return-Path: <my user>
Received: from Psi ([80.92.234.64])
        by mx.google.com with ESMTPS id f1sm20531634wiy.2.2012.10.08.10.07.49
        (version=TLSv1/SSLv3 cipher=OTHER);
        Mon, 08 Oct 2012 10:07:49 -0700 (PDT)
Message-ID: <[email protected]>
Sender: Roman R. <my user>
MIME-Version: 1.0
From: any email
To: my email
Date: Mon, 08 Oct 2012 10:07:49 -0700 (PDT)
Subject: Subject
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable

Body

Sender是用于通过Google Mail进行身份验证的电子邮件地址。 From是代码中提供的“来源”。接收方的应用程序可能会使两者混淆,其余的看上去与预期的一样。一些邮件客户端将发件人+发件人(如果不同)显示为“发件人代表发件人发送”。

您可能会担心Google Mail仍然会通过Sender字段显示发送电子邮件的帐户,但这是这样的。您确实是从该帐户发送的。

并且,另一个可能的原因是From邮件地址本身。如果您将其添加到您的Google Mail帐户作为您自己的地址之一(并通过带有链接的测试电子邮件进行了确认),则Google Mail将允许将其放置在From字段中。否则,它可能会掉落并替换为Sender


5
投票

我使用相同的方法使用GMail作为服务发送电子邮件。我最初将.From属性设置为“ [email protected]”,但是电子邮件仍然会以From标头设置为用于身份验证的帐户来发送。

面对此问题,我使用了ReplyToList属性(.ReplyToList.Add(MailAddress))),以便回复邮件的收件人将回复发送到电子邮件帐户,而不是我们用来发送外发邮件的“自动”帐户。 。

编辑:

有关更多信息,请参见this thread on Google Groups。另外,a related answer on Stack Overflow

© www.soinside.com 2019 - 2024. All rights reserved.