Приложения Winform по электронной почте с несколькими хостами - PullRequest
1 голос
/ 02 марта 2012

Я хочу отправлять почту на разные доменные имена или хосты, такие как gmail, Yahoo, Live и т. Д. Из одного приложения 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");
}

1 Ответ

1 голос
/ 02 марта 2012

Первый хост зависит только от отправителя. Таким образом, вы можете проанализировать 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;
        }

Приведенный выше метод будет иметь дело с "тремя"известные ", и, кроме того, вы можете предоставить своему пользователю дополнительный ручной хост с помощью текстового поля в вашей форме, отметьте Отправить SMTP-письмо , потому что для Yahoo есть хитрость

...