2012-10-08 140 views
7

發送電子郵件我想當我收到電子郵件使用Gmail發送SMTP在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。當我看結果時,字段填寫my user字段不應填寫any email?如何使用any email作爲發件人發送電子郵件?

+1

我認爲這是GMail控制其SMTP服務使用的一種方式。如果任何人都可以通過Gmail發送郵件給其他人,垃圾郵件發送者就會涌入那裏。這樣,'代表你'發送的所有電子郵件都來自你(='我的用戶') – n8wrl

+0

我已經在JAVA程序中做了這個......很多年前! :( – Victor

+0

您是否有機會檢查您收到的電子郵件的完整源代碼?它應該包含「發件人:任何電子郵件」和「發件人:我的用戶」。您看到電子郵件的應用程序可能會將發件人顯示爲如果它是From,並導致混淆 –

回答

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: <[email protected]> 
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是使用谷歌郵件驗證的電子郵件地址。 From是代碼中提供的「from」。接收的應用程序可能會混淆兩者,其餘的看起來和預期一致。某些郵件客戶端將「發件人+發件人」(當它們不同時)顯示爲「發件人代表發件人發送」。

您可能擔心的事實是,Google Mail仍然通過Sender字段顯示發送電子郵件的帳戶,但這是它的工作原理。你確實從這個帳戶發送。

而另一個可能的原因是From郵件地址本身。如果您將其添加到您的Google郵件帳戶作爲您自己的地址(並通過帶有鏈接的測試電子郵件進行確認),則Google Mail將允許將其置於From字段中。否則它可能會丟棄它並用Sender替換它。

+0

我是'gmail'設置有一個設置來改變'FROM'字段。這是一個更好的解決方案,它使得更專業。 .company.com'而不是'support.my.company @ gmail.com' – Victor

+1

這是我在上一段中的觀點。如果你在GMail中添加了你的電子郵件地址作爲你自己的備用地址,你可以把它放在'From'字段中C#代碼,否則它可能會被丟棄,並且在GMail上,您不能將任何內容放入「From」中,您只能從已確認的地址列表中選擇。正如你從答案中引用的電子郵件中看到的那樣,GMail正確放置了從那裏開始,因爲「任何郵件」都是我的備用地址之一。 –

5

我僱用同樣的人使用GMail作爲服務發送電子郵件。我最初將.From屬性設置爲「[email protected]」,但電子郵件仍然到達,From標頭設置爲用於認證的帳戶。

面對這樣的問題,我用ReplyToList屬性(.ReplyToList.Add(MailAddress))),使該回復郵件的收件人將被髮送的回覆比「自動化」一,我們用它來發送傳出消息以外的其他電子郵件帳戶。

編輯:

欲瞭解更多信息,請參閱this thread on Google Groups。另外,a related answer on Stack Overflow