Всем привет! Давно что-та я ничего нового не писал, ну ничего исправлюсь :)
Сегодня я вам покажу как сделать приложения для отправки писем по e-mail на C#. Вроде и нет ничего сложного но в интернете все пишут какой то "бред" (извините за выражение) и делают все через ..... Ну да ладно, на то Я и виду свой блог чтоб писать все самое лучше :)
Приступим:
- Создадим пустой проект winForms или wpf (здесь без разницы, кому на чем проще)
- Подключим нужные нам юзинги:
- Напишем следующий метод:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Windows;
public void SendMessage(string strName, string strLog, string strText, string strPass, string outMail,
string strSubject)
{
try
{
// обнулим на всяк случай
string smtp = "";
int port = 0;
// здесь не уверен на счет портов
// может (скорее всего) они неправильны, но если что
// это все легко гуглится ;) парвильный только gmail.com
var mailCoding = new Dictionary
{
{"gmail.com", 587},
{"yandex.ru", 225},
{"mail.ru", 235},
{"list.ru", 254},
{"inbox.ru", 215},
{"bk.ru", 255}
};
// поиск нужного порта и smtp при отправке
// можно так сделать, но нет мы КРУТЫЕ
// и напишем с помощью LINQ
//foreach (var kvp in mailCoding)
//{
// if (strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1)
// {
// smtp = "smtp." + kvp.Key;
// port = kvp.Value;
// }
//}
foreach (var kvp in mailCoding.Where(kvp => strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1))
{
smtp = "smtp." + kvp.Key;
port = kvp.Value;
}
using (var mailMessage = new MailMessage(strName + " <" + strLog + ">", outMail))
{
mailMessage.Subject = strSubject; // тема письма
mailMessage.Body = strText; // письмо
mailMessage.IsBodyHtml = false; // без html, но можно включить
using (var sc = new SmtpClient(smtp, port))
{
sc.EnableSsl = true;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.UseDefaultCredentials = false;
sc.Credentials = new NetworkCredential(strLog, strPass);
sc.Send(mailMessage);
}
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Ошибка");
}
}
Вот и все, прокомментировал немножко, должно хватить, ну если что-то будет вам непонятно или не получатся, пишите не стесняйтесь.
P.S. Если хотите про что-та интересное почитать и про что мало где пишут (ну или совсем не пишут), пишете мне буду очень рад помочь.
Удачи в ПРОграммировании.
Всем привет! Давно что-та я ничего нового не писал, ну ничего исправлюсь :)
Сегодня я вам покажу как сделать приложения для отправки писем по e-mail на C#. Вроде и нет ничего сложного но в интернете все пишут какой то "бред" (извините за выражение) и делают все через ..... Ну да ладно, на то Я и виду свой блог чтоб писать все самое лучше :)
Приступим:
- Создадим пустой проект winForms или wpf (здесь без разницы, кому на чем проще)
- Подключим нужные нам юзинги:
- Напишем следующий метод:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Windows;
public void SendMessage(string strName, string strLog, string strText, string strPass, string outMail,
string strSubject)
{
try
{
// обнулим на всяк случай
string smtp = "";
int port = 0;
// здесь не уверен на счет портов
// может (скорее всего) они неправильны, но если что
// это все легко гуглится ;) парвильный только gmail.com
var mailCoding = new Dictionary
{
{"gmail.com", 587},
{"yandex.ru", 225},
{"mail.ru", 235},
{"list.ru", 254},
{"inbox.ru", 215},
{"bk.ru", 255}
};
// поиск нужного порта и smtp при отправке
// можно так сделать, но нет мы КРУТЫЕ
// и напишем с помощью LINQ
//foreach (var kvp in mailCoding)
//{
// if (strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1)
// {
// smtp = "smtp." + kvp.Key;
// port = kvp.Value;
// }
//}
foreach (var kvp in mailCoding.Where(kvp => strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1))
{
smtp = "smtp." + kvp.Key;
port = kvp.Value;
}
using (var mailMessage = new MailMessage(strName + " <" + strLog + ">", outMail))
{
mailMessage.Subject = strSubject; // тема письма
mailMessage.Body = strText; // письмо
mailMessage.IsBodyHtml = false; // без html, но можно включить
using (var sc = new SmtpClient(smtp, port))
{
sc.EnableSsl = true;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.UseDefaultCredentials = false;
sc.Credentials = new NetworkCredential(strLog, strPass);
sc.Send(mailMessage);
}
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Ошибка");
}
}
Вот и все, прокомментировал немножко, должно хватить, ну если что-то будет вам непонятно или не получатся, пишите не стесняйтесь.
P.S. Если хотите про что-та интересное почитать и про что мало где пишут (ну или совсем не пишут), пишете мне буду очень рад помочь.
Удачи в ПРОграммировании.
0 коммент.:
Отправить комментарий