.NET 4.x Сбой при отправке сообщения электронной почты. - C#

Узнай цену своей работы

Формулировка задачи:

Хочу сохранить почту Gmail на комп в формате .eml Пишу
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);
            
        }
    }
}
и на строчке Smtp.Send(email); выдает ошибку Сбой при отправке сообщения электронной почты.; C подобными классами работаю впервые , помогите разобраться пожалуйста!

Решение задачи: «.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);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы