2010-10-06 104 views
22

我已经使用下面的代码使用gmail帐户从我的web应用程序发送邮件。我的问题是,我可以将发件人地址更改为除原始发件人(gmail)地址以外的其他地址吗? 我的代码如下:当通过gmail发送邮件时更改发件人地址c#

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 


System.Net.NetworkCredential cred = new 
     System.Net.NetworkCredential("[email protected]", "*******"); 

无论我做什么也没用,因为我总是从[email protected]接收邮件。有没有可能改变它?

我已更改为 mail.From = new System.Net.Mail.MailAddress("[email protected]");但我收到的邮件地址为[email protected],而不是来自新的“发件人”地址。我认为gmail smtp会使用原始凭证覆盖发件人地址。

回答

32

Gmail不允许您更改FROM与您的Gmail帐户不同。

无论您使用什么,他们会覆盖它,然后再继续。这可以防止垃圾邮件/欺骗。

+1

不正确,请参阅下面的评论。有可能,只要您将其他帐户添加为别名即可。 – Whiskey 2014-03-24 11:05:25

+0

这不是正确答案,我今天一起实现了philip和Simon_Weaver的答案,并能够使用帐户的主登录详细信息(与别名不同)成功从G Suite别名发送电子邮件。 – 2017-01-21 09:50:43

5

是只是使用的MailMessage

例如From财产。

mail.From = "[email protected]"; 

编辑:另外,看到这个帖子更详细的信息在通过Gmail如何电子邮件在C#

Sending email in .NET through Gmail

编辑:虽然这个工程的邮件在一般情况下,出现这将无法正常工作,因为谷歌覆盖它发送之前(请参阅@Dave wanta的答案)

+0

它似乎没有覆盖从地址... – 2010-10-06 11:04:16

+0

虽然你是正确的一般,当通过谷歌SMTP服务器专门发送邮件的“发件人:”财产被覆盖。 – scubbo 2013-08-06 13:28:40

+1

这不是事实,你可以使用不同于使用Google SMTP的地址。只要确保它是一个别名(正如w69rdy指出的那样)并且遵循RFC 2822规范(我的错误是电子邮件和名称括号之间有一个空格,它应该是[email protected] )。发件人地址不会被Google更改,但您可以影响此地址,因为它会使用您的Gmail设置中标记为默认的帐户。 – Whiskey 2014-03-24 11:03:36

29

这是解决方案:

  1. 代码使用上述设置mail.From =新的MailAddress(地址,显示名称)在Gmail
  2. ,进入邮件设置>>帐户和导入。
  3. 添加您将用作“发送邮件为”的发件人的电子邮件帐户。 (勾出别名)

这对我的作品

+0

更好的答案。可以在Gmail中更改From。 – 2013-12-08 02:23:26

2

如果您有发件人你可以做@philip建议的数量有限。例如,您可能有[email protected],[email protected][email protected]甚至[email protected]。只要他们是实际gmail.com网站上的批准发件人,您可以从他们发送。

Gmail.com : Sending mail from a different address

如果你期望从任意用户发送(如网站上的客户服务形式,用户在其中输入他们的电子邮件,你不希望他们直接寄给您)关于最好的你可以做的是:

 msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName)); 

如果你是在受控环境中,这伟大的工程,但请注意,我已经看到了一些电子邮件客户端发送到从地址即使指定回复到(我不不知道哪个)。