使用C#通过Gmail发送电子邮件时更改发件人地址

26

我已经使用以下代码通过一个Gmail账户从我的Web应用程序发送邮件。我的问题是,我能否将发件人地址更改为原始发件人(Gmail)地址之外的另一个地址?下面是我的代码:

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
System.Net.NetworkCredential cred = new System.Net.NetworkCredential("sample@gmail.com", "*******");

无论我做什么都没有用,因为我总是收到来自sample@gmail.com的邮件。有可能改变吗?

我已经更改为mail.From = new System.Net.Mail.MailAddress("sample@yahoo.com");但我收到的邮件的发件人地址仍然是sample@gmail.com而不是新的“From”地址。 我认为gmail smtp将发件人地址覆盖为原始凭据。

5个回答

40

以下是解决方案:

  1. 使用上面的代码将 mail.From 设置为新的 MailAddress(address, display name)。
  2. 在 Gmail 中,转到邮件设置 >> 帐户和导入。
  3. 在“发送邮件作为”中添加您将用作发件人的电子邮件帐户。(勾选别名)

这对我有效。


更好的答案。在Gmail中可以更改发件人。 - Matt Fitzmaurice
太好了。非常感谢! - Lukas Wiklund
这是一个更好的答案。谢谢。 - Abdoulie Kassama

35

Gmail不允许您将"FROM"(发件人)更改为与您的Gmail帐户不同的内容。

无论您使用什么,它们都会在转发之前覆盖它,以防止垃圾邮件/欺骗行为。


1
不是真的,请看下面我的评论。只要将另一个帐户添加为别名,就可以实现。 - Whiskey
1
这不是正确的答案,今天我将Philip和Simon_Weaver的答案结合起来实现了,成功地使用帐户的主要登录详细信息(与别名不同)从G Suite别名发送电子邮件。 - Dave Lucre

5

可以使用MailMessageFrom属性。

例如:

mail.From = "newemail@email.com";

编辑: 此外,请查看此帖子以获取有关如何通过C#在Gmail中发送电子邮件的更详细信息。

通过Gmail在.NET中发送电子邮件

编辑: 尽管这适用于一般邮件,但似乎对于Gmail不起作用,因为Google在发送前会进行覆盖 (请参见@Dave wanta的答案)。


尽管一般来说你是正确的,但当通过谷歌 SMTP 服务器发送邮件时,“From:”属性会被覆盖。 - scubbo
1
这是不正确的,你可以使用Google SMTP来使用不同的发件人地址。只需确保它是别名(正如w69rdy所指出的),并遵循RFC 2822规范(我的错误是在电子邮件和名称括号之间有一个空格,应该是test@test.com<Test User>)。发件人地址不会被Google更改,但您可以影响此操作,因为它将使用在您的Gmail设置中标记为默认的帐户。 - Whiskey

2
如果您只有有限的发件人,您可以像@philip建议的那样操作。例如,您可能有customerservice@example.comsimon@example.comphilip@example.com,甚至是alias@example.com。只要它们是实际gmail.com网站上批准的发件人,您就可以从它们发送邮件。 Gmail.com:从不同的地址发送邮件 如果您希望从任意用户(例如网站上的客户服务表单,其中用户输入其电子邮件地址,而您不希望他们直接给您发送电子邮件)发送邮件,则最好的方法是:
        msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName));

如果您处于受控环境中,这个方法很有效,但请注意,我曾经看到一些电子邮件客户端即使指定了回复地址,仍然将邮件发送到发件人地址(我不知道是哪些客户端)。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接