В данной статье я хочу рассказать вам, как с помощью C# и .NET Framework осуществить отправку электронной почты. Мы будем отправлять письмо через определенный smtp сервер, который требует авторизацию. Итак, присутпим.
Создадим консольное приложение. Для работы с сетью и почтой необходимо подключить пространства имен:
using System.Net; using System.Net.Mail;
Теперь займемся непосрдественно отправкой почты:
static void SendMail()
{
//smtp сервер
string smtpHost = "smtp.server.net";
//smtp порт
int smtpPort = 25;
//логин
string login = "login";
//пароль
string pass = "pass";
//создаем подключение
SmtpClient client = new SmtpClient(smtpHost, smtpPort);
client.Credentials = new NetworkCredential(login, pass);
//От кого письмо
string from = "from@server.net";
//Кому письмо
string to = "to@server.net";
//Тема письма
string subject = "Письмо от C Sharp";
//Текст письма
string body = "Привет! \n\n\n Это тестовое письмо от C Sharp";
//Создаем сообщение
MailMessage mess = new MailMessage(from, to, subject, body);
try
{
client.Send(mess);
Console.WriteLine("Message send");
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadKey();
}
}
Тело письма и заголовок будут созданы и отослаы в кодировке UTF-8. Если необходимо отослать письмо в кодировке windows-1251 необходимо вручную прописать заголовок:
mess.SubjectEncoding = Encoding.Default; mess.BodyEncoding = Encoding.Default; mess.Headers["Content-type"] = "text/plain; charset=windows-1251";
Если захотите прикрепить к письму еще и вложения:
//Вложение для письма //Если нужно не одно вложение, для каждого создаем отдельный Attachment Attachment attData = new Attachment(@"D:\att.zip"); ... //прикрепляем вложение mess.Attachments.Add(attData);
Вот и все. В результате получаем на адресс “to” письмо от “from”.
[download id=”10″]

Спасибо большое:)
А как отследить процесс загрузки вложения? Хотелось бы отображать время загрузки вложения перед отправкой.
Если с командной строки письма успешно отправляются, а при помощи php нет, попробуйте поэкспериментировать с четвертым параметром функции mail либо с настройкой sendmail_path, находящейся в файле php. Какой бы способ вы не выбрали, вам необходимо установить переменные SMTP, smtp_port, определяющие настройки сервера, отправляющего почту.
Жалко, что 2 года назад я это не прочитал :O(