我正在尝试使用下面的代码
在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 user
。 FROM 字段不应该填充any email
吗?如何使用any email
作为发件人发送电子邮件?
答案 0 :(得分:5)
我使用相同的方式使用GMail作为服务发送电子邮件。我最初将.From
属性设置为“noreply@mydomain.com”,但电子邮件仍然到达,并将From标头设置为用于进行身份验证的帐户。
面对此问题,我使用了ReplyToList
属性(.ReplyToList.Add(MailAddress))
),以便回复邮件的收件人会将回复发送到除我们之外的“自动”帐户以外的电子邮件帐户用来发送外发消息。
修改强>
有关详细信息,请参阅this thread on Google Groups。另外,a related answer on Stack Overflow。
答案 1 :(得分: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: <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
Sender
是用于通过Google Mail进行身份验证的电子邮件地址。 From
是代码中提供的“from”。接收应用程序可能会混淆两者,其余的看起来就像预期的那样。一些邮件客户端将From + Sender(当它们不同时)显示为“由Sender代表From发送”。
您可能会担心Google Mail仍会通过Sender
字段显示发送电子邮件的帐户,但这就是它的工作原理。您确实从此帐户发送。
另一个可能的原因是From
邮件地址本身。如果您将其添加到您的Google Mail帐户作为您自己的地址(并通过带有链接的测试电子邮件进行确认),则Google Mail会允许将其放入From
字段。否则它可能会删除它并将其替换为Sender
。