2010-10-06 93 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)); 

如果你是在受控環境中,這偉大的工程,但請注意,我已經看到了一些電子郵件客戶端發送到從地址即使指定回覆到(我不不知道哪個)。