2011-03-03 71 views
0

我有一個「聯繫我們」頁面,用戶將在其電子郵件ID和查詢中提供並提交表單時,Web管理員將收到該電子郵件。如何從谷歌,雅虎或其他郵件域發送郵件在ASP.Net?

如果我將他們的電子郵件ID配置爲「from」MailAddress併發送郵件,如果該ID來自流行的郵件域(如Gmail或Hotmail),但它可以與其他不受歡迎或不存在的域一起使用@ abcxyzmail.om沒有任何憑據提供!

在我正確配置了SMTP和網絡憑據後,它與gmail一起工作。 目的是讓我的網站的管理員能夠在他的郵件客戶端中點擊回覆按鈕,並看到填充「聯繫我們」頁面中填寫的「發件人」字段的「到」字段。 有沒有任何適當的方法來做到這一點或提示或技巧來實現它。

繼承人我的代碼

MailMessage emailMessage = new MailMessage(); 
    MailAddress emailTo = new MailAddress("[email protected]", "Web Dev"); 
    MailAddress emailFrom = new MailAddress(tbEmail.Text); 
    SmtpClient localhost = new SmtpClient("localhost"); 

    emailMessage.To.Add(emailTo); 
    emailMessage.From = emailFrom; 
    emailMessage.Subject = "Enquiry/Feedback"; 
    emailMessage.Body = "Name: " + tbName.Text + 
      "\nAddress: " + tbEmail.Text + 
      "\nComments: " + tbComments.Text;//emails body 

    localhost.Send(emailMessage); 

感謝

希德

+0

重複: http://stackoverflow.com/questions/5028728/c-how-to-send-email/5028788#5028788 – Pleun 2011-03-03 23:38:57

+0

沒辦法!他是一個初學者的問題。我想在我的郵件客戶端的「from」字段中擁有用戶的電子郵件ID。但據我所知,這隻會發生,當他輸入他的密碼是不可取的。 – 2011-03-03 23:58:04

回答

0

不確定爲什麼你在這裏遇到問題 - 我們有幾個系統可以做到這一點沒有任何問題。但郵件是一個精緻而又狡猾的野獸;我敢打賭,服務器上的配置設置搞砸了 - 你有多少控制?

在任何情況下,更正確的方法是使用EmailMessage.ReplyTo(2.0/3.5)或EmailMessage.ReplyToList(4.0)屬性發送消息。這可能會繞過導致此問題的服務器上的任何配置。

+0

賓果!這正是我需要的!謝謝你。 – 2011-03-04 00:45:28

+0

偏離主題。你的名字讓我想起埃利斯懷亞特。 – 2011-03-04 05:25:58

+0

呵呵。我通常會得到「Wyatt Earp」。 。 。 – 2011-03-04 12:34:48

0

這是因爲您使用的是本地主機發送郵件 - 你需要一個電子郵件服務器。如果你實際上有一個Gmail帳戶(或其他)帳戶 - 然後使用他們的服務器與正確的憑據。

+0

如果是這樣的話,爲什麼來自我的域名的其他不存在的域名或郵件的郵件到達我的收件箱? – 2011-03-03 23:52:23

+0

你誤解了他的問題。 – Shoban 2011-03-03 23:58:15

0
using Microsoft.VisualBasic; 
using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 
using System.Net.Mail; 


public class YourClass 
{ 
    private void SendMailFromGmail(string vFrom, string vTo, string vGmailID, string vGmailPass, string vMailText, string vSMPTDNS, string vSubject) 
    { 
     MailMessage MyMailMessage = new MailMessage(); 
     SmtpClient SMTPServer = new SmtpClient(vSMPTDNS); 
     var _with1 = SMTPServer; 
     //Start by creating a mail message object 

     //From requires an instance of the MailAddress type 

     MyMailMessage.From = new MailAddress(vFrom); 

     //To is a collection of MailAddress types 
     MyMailMessage.To.Add(vTo);  
     MyMailMessage.Subject = vSubject; 
     MyMailMessage.Body = vMailText; 
     //Create the SMTPClient object and specify the SMTP GMail server 
     _with1.Port = 587; 

     _with1.Credentials = new System.Net.NetworkCredential(vGmailID, vGmailPass); 
     _with1.EnableSsl = true; 

     try { 
      _with1.Send(MyMailMessage); 
      string lNewVariable5 = "Email Sent"; 
     //MessageBox.Show(lNewVariable5) 
     } catch (SmtpException ex) { 
      throw ex; 
     } 
    } 

    public void Main() 
    { 
     string vFrom = "[email protected]"; 
     string vTo = "[email protected]_name_here"; 
     string vGmailID = "account uid"; 
     string vGmailPass = " account pwd"; 
     string vMailText = "This is the test text for Gmail email"; 
     string vSMPTDNS = "smtp.gmail.com"; 
     string vSubject = "GMail Test"; 

     SendMailFromGmail(vFrom, vTo, vGmailID, vGmailPass, vMailText, vSMPTDNS, vSubject); 
    } 



} 
+0

感謝您的代碼。但我不能問用戶密碼。 – 2011-03-04 00:16:11

0

添加回復頭

mail.Headers.Add("Reply-To", "[email protected]"); 

這將使電子郵件客戶端來填充這個地址,而不是從地址。這是你想要的。以上代碼未經測試。

+0

差不多就是答案。 ReplyTo屬性的電子郵件是我需要的。 – 2011-03-04 00:47:18

相關問題