6.3.9 Работа с email сообщениями
Отправка email по каналу IEmailChannel:
Для отправки email по каналу IEmailChannel необходимо подключить к проекту NuGet пакет Eos.Platform.Notification.Email и использовать метод bool Send(string profileName, IAppSettingsService appSettingsService, ISecretStore secretStore, string addressee, string messageText, ILogger logger) возвращающий true/false в зависимости от успешности отправки сообщения.
Метод принимает параметры:
string profileName - профиль электронной почты (значение поля INSTANCE таблицы APP_SETTINGS)
IAppSettingsService appSettingsService - сервис настроек AppSettings
ISecretStore secretStore - сервис секретов (для паролей)
string addressee - email адрес получателя сообщения
string messageText - email сообщение
ILogger logger - логгер
Пример использования метода Send:
|
public void SendEmail(string emailCfgInstanceId, string emailMessage, string addressee, IServiceProvider services, ILogger logger)
{
var channel = services.GetRequiredService<IEmailChannel>();
var appSettingsService = services.GetRequiredService<IAppSettingsService>();
var secretStore = services.GetRequiredService<ISecretStore>();
var success = channel.Send(emailCfgInstanceId, appSettingsService, secretStore, addressee, emailMessage, logger);
}
|
Работа с email сообщениями с помощью MainManHelper, библиотека Eos.Delo.Utils:
Методы используют файловую систему для хранения сообщений электронной почты в стандартном формате “.eml”. При ошибках выполнения отправки и получения email сообщений, а также указания неизвестного типа авторизации для SMTP сервера, вызываются исключения.
Отправка сообщения
Для отправки сообщений через SMTP сервер используется метод SendEmail. При создании экземпляра класса MailManHelper необходимо указать настройки для SMTP сервера типа SmtpSettings. Для метода SendEmail указываются путь к электронному сообщению, необходимость отправки в зашифрованном виде и отправки с цифровой подписью.
Пример отправки сообщения:
|
// Отправка email сообщения
var smtpSetting = new SmtpSettings()
{
Port = 465,
AuthMethod = "LOGIN",
Host = "smtp.mail.ru",
Username = "login@mail.ru",
Password = "password"
};
var mailMan = new MailManHelper(smtpSetting);
try
{
mailMan.SendEmail(pathEml, false, false);
}
catch { ... }
|
Получение сообщения
Для получения (выгрузки) сообщения с сервера POP3 используется метод GetEmail. При создании экземпляра класса MailManHelper необходимо указать настройки для POP3 сервера типа PopSettings. Для метода GetEmail указываются путь к директории для хранения сообщений и поле типа string, для записи пути к выгруженному сообщению. Полученные сообщения удаляются с сервера.
Пример получения сообщения:
|
// Получение email сообщения
var popSetting = new PopSettings()
{
Port = 995,
Host = "pop.mail.ru",
Login = "login@mail.ru",
Password = "password"
};
var mailMan = new MailManHelper(popSetting);
try
{
mailMan.GetEmail(pathDirectory, out string emlReceivedPath);
}
catch { ... }
|
Также работать с email сообщениями можно стандартными средствами .NET Core:
|
// Работа с email сообщениями
var message = new MailMessage();
message.IsBodyHtml = false;
message.From = new MailAddress(MailFrom);
message.To.Add(EMail);
message.Subject = "тема";
message.Body = "текст";
message.BodyEncoding = Encoding.UTF8;
SmtpClient smtp = new SmtpClient(SMTPAddress, SMTPPort);
smtp.Credentials = new NetworkCredential(Login, Pass, Domain);
smtp.Send(message);
|
