Отправляем сообщения используя SmtpClient (asp.net-mvc)

  1. Напишем сервис для работы с SmtpClient
    public class EmailService : BaseService, IEmailService
    {
        [Value("MailMessage.From")]
        public string From { get; set; }
        [Value("SmtpClient.Host")]
        public string Host { get; set; }
        [Value("SmtpClient.Port")]
        public int Port { get; set; }
        [Value("SmtpClient.EnableSsl")]
        public bool EnableSsl { get; set; }
        [Value("SmtpClient.Credentials.User")]
        public string User { get; set; }
        [Value("SmtpClient.Credentials.Password")]
        public string Password { get; set; }
    
        public void SendMessage(string from, List<string> to, string subject, string body)
        {
            using (SmtpClient smtpServer = new SmtpClient())
            {
                try
                {
                    if (string.IsNullOrEmpty(from))
                        from = From;
                    if (to == null)
                        to = new List<string>();
                    if (!to.Any(x => x.Equals(From)))
                        to.Add(From);
    
                    MailMessage mail = new MailMessage();
                    mail.IsBodyHtml = true;
                    mail.From = new MailAddress(from);
                    foreach (string t in to)
                        mail.To.Add(t);
                    mail.Subject = subject;
                    mail.Body = body;
    
                    smtpServer.Host = Host;
                    smtpServer.Port = Port;
                    smtpServer.EnableSsl = EnableSsl;
                    smtpServer.Credentials = new System.Net.NetworkCredential(User, Password);
                    smtpServer.Send(mail);
                }
                catch (Exception ex)
                {
                    ex = new Exception("Произошла ошибка при отправке сообщения на почту", ex);
                    // your loging
                    throw ex;
                }
            }
        }
        public void SendMessage(string from, string to, string subject, string body)
        {
            SendMessage(from, new List<string> {to}, subject, body);
        }
    }
    

    Атрибут Value описан здесь.

  2. Добавим в Web.config такие строчки:
    <appSettings>
        <add key="SmtpClient.Host" value="smtp.mail.ru" />
        <add key="SmtpClient.Port" value="587" />
        <add key="SmtpClient.EnableSsl" value="true" />
        <add key="SmtpClient.Credentials.User" value="example@mail.ru" />
        <add key="SmtpClient.Credentials.Password" value="password" />
        <add key="MailMessage.From" value="example@mail.ru" />
    </appSettings>
    

    В Web.Release.config можете переопределить эти настройки.

По теме:
Выполняем get запрос по расписанию c#

Напишем простенькую программу, которая будет выполнять get запрос по истечению определенного интервала времени. class Program { private static Timer _timer; Read more

Выполняем действие по расписанию (asp.net, c#)

Раньше я писал программку, которая выполняла get запрос по расписанию, но так же можно написать обычный HttpModule, который будет делать Read more

Выбираем технологии и инструменты для разработки веб приложений

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные): 1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку Read more

Делаем водяной знак на картинке (c#, .net)

Нанесем несколько раз картинку watermark на другую картинку. public void DrawWatermark(string watermarkImagePath, System.Drawing.Image image) { using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *