.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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д