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

C# 如何在通过Gmail SMTP发送电子邮件时使用“发件人”字段中的任何电子邮件地址?,c#,gmail,smtpclient,C#,Gmail,Smtpclient,我正在尝试使用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.Attach

我正在尝试使用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);

当我收到电子邮件时,发件人字段将填充
我的用户
。我正在使用
usefaultcredentials
作为
false
。当我查看结果时,FROM字段将填充
我的用户
发件人字段中不应该填写
任何电子邮件
?如何使用
任何电子邮件作为发件人发送电子邮件?

我使用GMail作为服务发送电子邮件。我最初将
.From
属性设置为“noreply@mydomain.com“但是电子邮件到达时仍然将发件人标题设置为用于身份验证的帐户

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

编辑:


有关详细信息,请参阅。另外,.

运行您的代码片段后,我得到:

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: <50730865.2152b40a.13ea.28ec@mx.google.com>
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
返回路径:
收到:来自Psi([80.92.234.64])
由mx.google.com提供,ESMTPS id为f1sm20531634wiy.2.2012.10.08.10.07.49
(版本=TLSv1/SSLv3密码=其他);
2012年10月8日星期一10:07:49-0700(太平洋时间)
消息ID:
发件人:罗曼R。
MIME版本:1.0
发件人:有电子邮件吗
收件人:我的电子邮件
日期:2012年10月8日星期一10:07:49-0700(PDT)
主题:主题
内容类型:文本/纯文本;字符集=美国ascii码
内容传输编码:引用可打印
身体
Sender
是用于通过Google Mail进行身份验证的电子邮件地址<代码>发件人
是代码中提供的“发件人”。接收应用程序可能会混淆两者,其余的看起来与预期的一样。某些邮件客户端将发件人+发件人(如果它们不同)表示为“发件人代表发件人发送”

您可能会担心,Google Mail仍然会通过
Sender
字段显示发送电子邮件的帐户,但这就是它的工作原理。您确实从这个帐户发送


另一个可能的原因是来自邮件地址本身的
。如果您将其作为自己的地址之一添加到您的Google Mail帐户(并通过带有链接的测试电子邮件确认),则Google Mail将允许将其从
字段放入
。否则它可能会删除它,并用
发送者替换它

我认为这是GMail控制SMTP服务使用的一种方式。如果有人能通过GMail向其他人发送邮件,垃圾邮件发送者就会蜂拥而至。通过这种方式,“代表你”发送的所有电子邮件都来自你(‘我的用户’)我已经在JAVA程序中这样做了。。。许多年前!:(您是否有机会检查您收到的电子邮件的完整来源?它应该有“发件人:任何电子邮件”和“发件人:我的用户”。您看到电子邮件时使用的应用程序可能会将发件人显示为来自,从而导致混淆。我是
gmail
settings有一个设置可以更改
From
字段。这是一个更好的解决方案,更专业。最好从
接收电子邮件support@my.company.com
support.my.company@gmail.com
这是我在最后一段中的观点。如果你在gmail中添加了你的电子邮件地址作为你自己的备用地址,你也可以把它放在C#code中的
From
字段中。否则它可能会被丢弃,在gmail上你不能把任何东西放在“From”中,您也只能从已确认的地址列表中选择。正如您从我在回答中引用的电子邮件中看到的,GMail正确地从那里输入,因为“任何邮件”都是我的备用地址之一。