.NET 4.x Сбой при отправке сообщения электронной почты. - C#
Формулировка задачи:
Хочу сохранить почту Gmail на комп в формате .eml
Пишу
и на строчке Smtp.Send(email); выдает ошибку Сбой при отправке сообщения электронной почты.;
C подобными классами работаю впервые , помогите разобраться пожалуйста!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.IO;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SmtpClient Smtp = new SmtpClient("smtp.gmail.com", 587);
Smtp.UseDefaultCredentials = false;
Smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
Smtp.EnableSsl = true;
Smtp.Credentials = new NetworkCredential("removed@mail.ru", "ПАРОЛЬ");
MailMessage email = new MailMessage();
email.From = new MailAddress("removed@mail.ru");
email.To.Add("removed@mail.ru");
Smtp.PickupDirectoryLocation = "C:\\temp\\";
Smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
Smtp.Send(email);
}
}
}Решение задачи: «.NET 4.x Сбой при отправке сообщения электронной почты.»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Collections.Specialized;
using System.Text;
using System.Web;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Windows.Forms;
namespace SMTP
{
class SMTPClient
{
public event SendCompletedEventHandler OnSendCompleted;
public delegate void error(object sender, string MsgError);
public event error OnError;
public Encoding Encod = Encoding.UTF8;
public bool IsBodyHtml = false;
public bool EnableSsl = false;
public string UserName = "";
public string Password = "";
public MailPriority PrioritetSender = new MailPriority();
public DeliveryNotificationOptions DelivetyNotifiOptions = new DeliveryNotificationOptions();
MailMessage Message = new MailMessage();
System.Net.Mail.SmtpClient Smtp = new SmtpClient("smtp.mail.ru", 2525);
/// <summary>
/// Отправка сообщения
/// </summary>
/// <param name="Subject">Заголовок сообщения</param>
/// <param name="Body">Текст сообщения</param>
/// <param name="To">Адрес получателя</param>
/// <param name="FilesName">Колекция путей файлов для вложения в письмо.</param>
/// <returns>Заголовок отправленного запроса</returns>
public NameValueCollection SendMessage(string Subject, string Body, string To, ArrayList FilesName)
{
NameValueCollection Header = new NameValueCollection();
if (Subject.Length > 0) Message.Subject = Subject;
else Message.Subject = "Message";
if (Body.Length > 0) Message.Body = Body;
else Message.Body = "Message";
foreach (object at in FilesName)
{
Message.Attachments.Add(new Attachment(at.ToString()));
}
Message.BodyEncoding = Encod;
Message.SubjectEncoding = Encod;
Message.From = new MailAddress(UserName.Trim());
Message.IsBodyHtml = IsBodyHtml;
Message.To.Add(new MailAddress(To.Trim()));
Message.Priority = PrioritetSender;
Header = Message.Headers;
Message.DeliveryNotificationOptions = DelivetyNotifiOptions;
try
{
Smtp.Send(Message);
}
catch (SmtpFailedRecipientsException ex)
{
if (OnError != null)
OnError("SendMessage", ex.Message.Trim());
}
catch (SmtpFailedRecipientException ex)
{
if (OnError != null)
OnError("SendMessage", ex.Message.Trim());
}
catch (SmtpException ex)
{
if (OnError != null)
{
OnError("SendMessage", ex.Message.Trim());
}
}
return Header;
}
/// <summary>
/// Отправка сообщения
/// </summary>
/// <param name="Subject">Заголовок сообщения</param>
/// <param name="Body">Текст сообщения</param>
/// <param name="To">Адрес получателя</param>
/// <returns>Заголовок отправленного запроса</returns>
public NameValueCollection SendMessage(string Subject, string Body, string To)
{
return SendMessage(Subject, Body, To, new ArrayList());
}
/// <summary>
/// Конструктор
/// </summary>
/// <param name="userName">Имя пользователя для авторизации</param>
/// <param name="password">Пароль пользователя для авторизации</param>
public SMTPClient(string userName, string password)
{
UserName = userName.Trim();
Password = password.Trim();
Smtp.EnableSsl = EnableSsl;
Smtp.Credentials = new System.Net.NetworkCredential(UserName, Password);
Smtp.SendCompleted += new SendCompletedEventHandler(Smtp_SendCompleted);
}
/// <summary>
/// Конструктор
/// </summary>
/// <param name="userName">Имя пользователя для авторизации</param>
/// <param name="password">Пароль пользователя для авторизации</param>
/// <param name="isBodyHtml">Использование HTML в письме</param>
/// <param name="enableSsl">Использование Ssl</param>
public SMTPClient(string userName, string password, bool isBodyHtml, bool enableSsl)
: this(userName, password)
{
IsBodyHtml = isBodyHtml;
EnableSsl = enableSsl;
}
/// <summary>
/// Конструктор
/// </summary>
/// <param name="userName">Имя пользователя для авторизации</param>
/// <param name="password">Пароль пользователя для авторизации</param>
/// <param name="isBodyHtml">Использование HTML в письме</param>
/// <param name="enableSsl">Использование Ssl</param>
/// <param name="prioritet">Задает приоритет</param>
/// <param name="option">Описывает параметры уведомления о доставке электронной почты.</param>
/// <param name="en">Задает кодировку, используемую для кодирования тела сообщения.</param>
public SMTPClient(string userName, string password, bool isBodyHtml, bool enableSsl, MailPriority prioritet, DeliveryNotificationOptions option, Encoding en)
: this(userName, password, isBodyHtml, enableSsl)
{
PrioritetSender = prioritet;
DelivetyNotifiOptions = option;
Encod = en;
}
void Smtp_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
OnSendCompleted(sender, e);
}
}
}