2012-03-02 43 views
1

我想發送不同的域名或主機上的郵件,如Gmail,雅虎,直播等從一個winform應用程序。電子郵件winform應用程序與多個主機

try 
{ 
    MailMessage mail = new MailMessage(txt_from.Text, txt_to.Text, txt_subject.Text, txt_message.Text); 
    SmtpClient client = new SmtpClient("smtp.gmail.com"); 
    client.Port = 587; 
    client.Credentials = new System.Net.NetworkCredential(txt_username.Text, txt_password.Text); 
    client.EnableSsl = true; 
    client.Send(mail); 
    MessageBox.Show("Mail Sent !"); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message, "Gmail Sender"); 
} 
+0

假設,任何人都有gmail雅虎直播等id,那麼如何編碼多個主機? system.net.mail只爲一個客戶端 – 2012-03-02 19:21:45

+0

看到,我已經做了一個窗口的應用程序,只有gmail用戶可以發送郵件到其他域。現在,我想要一般的代碼:假設我的身份證上的Gmail和我的朋友身份證雅虎,當我打開這個應用程序,然後郵件發送很容易,因爲在該應用程序Gmail郵件smtp,但我的朋友郵件沒有發送,因爲smtp不匹配的雅虎。所以你告訴我那個的一般代碼 – 2012-03-02 19:27:18

+0

這不是一個「gimme da codez」網站。這裏沒人會爲你做你的工作(除非你付錢)。向我們展示您所嘗試的內容,告訴我們您遇到了什麼問題,我們很樂意幫助您解決問題。 – 2012-03-02 19:28:30

回答

1

首先主機只有sender.So取決於您可以分析txt_from.Text到現在,你將需要使用哪些主機:

private string GetHost(string SenderEmailAddress) 
     { 
      string host = ""; 
      try 
      { 
       if (SenderEmailAddress.Contains("@gmail.")) 
        host = "smtp.gmail.com"; 
       else if (SenderEmailAddress.Contains("@live.") || SenderEmailAddress.Contains("@hotmail.")) 
        host = "smtp.live.com"; 
       else if (SenderEmailAddress.Contains("@yahoo.")) 
        host = "smtp.mail.yahoo.com"; 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      return host; 
     } 

上述方法處理「名將三國」的人,另外你可以通過你的表單中的文本框爲你的用戶提供一個可選的手動主機,檢查Send smtp email,因爲有一個雅虎案例

+0

你可以合併你的程序與我的。 我有一個按鈕和完整的代碼背後。所以請合併它們的所有編碼 – 2012-03-02 20:06:31

+0

感謝代碼 – 2012-03-02 20:17:12

+0

先生代碼無法正常工作。 主機提及端口是什麼?在代碼中定義不是強制的嗎? – 2012-03-02 20:33:23

相關問題