Вы можете просто использовать Mailkit
- Он работает из любого приложения, которое использует. NET.
- Он поддерживает HTML, обычный текст, а также текст RTF
- Да, электронная почта появляется в папке черновиков и распознается как новая, ее можно достичь.
- Он поддерживает вложения
Использование довольно просто, я могу привести пример того, как я использую его в своем хобби-проекте.
Я не использую вложения, но с Mailkit, это очень легко сделать. Вы можете проверить их FAQ
Но в любом случае я опубликую здесь, как я его использую.
1) Сначала создайте класс сообщения, который будет отвечать за обработку Subject, содержание и информация о человеке, которому вы отправляете письмо. С помощью простого конструктора вы начнете вводить свои свойства.
using System;
using MimeKit;
namespace SomeNamespace
{
public class Message
{
public List<MailboxAddress> To { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
public Message(IEnumerable<string> to, string subject, string content)
{
To = new List<MailboxAddress>();
To.AddRange(to.Select(x => new MailboxAddress(x)));
Subject = subject;
Content = content;
}
}
}
2) Вам также понадобится ваш класс конфигурации SMTP, который будет содержать информацию о вашей электронной почте. (Откуда вы будете отправлять почту)
using System;
namespace SomeNamespace
{
public class EmailConfiguration
{
public string SMTPFrom { get; set; }
public string SMTPHost { get; set; }
public int SMTPPort { get; set; }
public string SMTPLogin { get; set; }
public string SMTPPassword { get; set; }
}
}
3) Затем вы создадите свой простой интерфейс
public interface IEmailSender
{
void SendEmail(Message message);
}
4) Затем вы создадите реализацию вашего сервиса.
using System;
using MailKit.Net.Smtp;
using MimeKit;
using SomeNamespace.Configuration;
using SomeNamespace.Services.Interfaces;
namespace SomeNamespace
{
public class EmailSender : IEmailSender
{
private readonly EmailConfiguration _emailConfig;
public EmailSender(EmailConfiguration emailConfig)
{
_emailConfig = emailConfig;
}
public void SendEmail(Message message)
{
var emailMessage = CreateEmailMessage(message);
Send(emailMessage);
}
private MimeMessage CreateEmailMessage(Message message)
{
var emailMessage = new MimeMessage();
emailMessage.From.Add(new MailboxAddress(_emailConfig.SMTPFrom));
emailMessage.To.AddRange(message.To);
emailMessage.Subject = message.Subject;
emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text) { Text = message.Content };
return emailMessage;
}
private void Send(MimeMessage mailMessage)
{
using (var client = new SmtpClient())
{
try
{
client.Connect(_emailConfig.SMTPHost, _emailConfig.SMTPPort, true);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(_emailConfig.SMTPLogin, _emailConfig.SMTPPassword);
client.Send(mailMessage);
}
catch(Exception message)
{
Console.WriteLine(message);
throw;
}
finally
{
client.Disconnect(true);
client.Dispose();
}
}
}
}
}
Последний шаг - создание моделей Message и EmailConfiguration . Создайте экземпляр EmailSender и отправьте электронное письмо.
var message = new Message("whotosend@gmail.com", "Some example Subject", "Some example content");
var emailConfiguration = new EmailConfiguration()
{
SMTPFrom = "yourSmtpAdress",
SMTPHost = "yourSmtpHost",
SMTPLogin = "yourSmtpLogin",
SMTPPassword = "yourSmtpPassword",
SMTPPort = 465
};
var _emailSender = new EmailSender(emailConfiguration);
_emailSender.SendEmail(message);
Конечно, вы можете использовать DI для создания своих экземпляров службы, но это зависит от вас.
Оставайся дома, будь в безопасности, с sh тебя радует кодирование.