2012-03-02 1 views
1

Я хочу отправить почту на разные имена доменов или хост, такие как gmail, yahoo, live и т. Д. Из одного приложения winform.Email 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 yahoo live и т. д. id, то как закодировать для нескольких хостов? system.net.mail только для одного клиента –

+0

см., я сделал одно окно приложений в том, что только пользователь Gmail может отправлять почту другим доменам. теперь, я хочу общий код: предположим, что мой id на gmail и мой идентификатор друга на yahoo, когда я открою эти приложения, тогда почта отправлена ​​легко, потому что в этих приложениях gmail smtp, но моя почта друга не отправлена ​​из-за того, что smtp не подходит для yahoo. поэтому вы говорите мне общий код для этого –

+0

Это не сайт «gimme da codez». Никто здесь не сделает вашу работу за вас (если вы не заплатите им). Покажите нам, что вы попробовали, покажите нам, какие у вас были проблемы, и мы будем рады помочь вам решить проблему. –

ответ

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, потому что есть трюк для дела Yahoo

+0

Можете ли вы объединить свою программу с моей. У меня есть одна кнопка и полный код. поэтому, пожалуйста, слейте их все кодирование –

+0

за код –

+0

сэр код не работает. Хост упоминает и как насчет порта? не обязательно ли указывать в коде? –