Я использую aspNetBoilerplate для отправки электронного письма (или попытки отправить электронное письмо)
Я добавил настройки в базу данных с помощью Создателя настроек по умолчанию в начальных данных, например:
namespace ESMPortal.EntityFrameworkCore.Seed.Host
{
public class DefaultSettingsCreator
{
private readonly ESMPortalDbContext _context;
public DefaultSettingsCreator(ESMPortalDbContext context)
{
_context = context;
}
public void Create()
{
// Emailing
AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, "system@elite-sports-management.co.uk");
AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, "Elite Sports Management");
AddSettingIfNotExists(EmailSettingNames.Smtp.Host, "mail.x.co.uk");
AddSettingIfNotExists(EmailSettingNames.Smtp.Password, "xxx");
AddSettingIfNotExists(EmailSettingNames.Smtp.UserName, "system@x.co.uk");
AddSettingIfNotExists(EmailSettingNames.Smtp.EnableSsl, "true");
// Languages
AddSettingIfNotExists(LocalizationSettingNames.DefaultLanguage, "en");
}
private void AddSettingIfNotExists(string name, string value, int? tenantId = null)
{
if (_context.Settings.IgnoreQueryFilters().Any(s => s.Name == name && s.TenantId == tenantId && s.UserId == null))
{
return;
}
_context.Settings.Add(new Setting(tenantId, null, name, value));
_context.SaveChanges();
}
}
}
Я подтвердил, что эти настройки добавляются в базу данных при запуске проекта
Однако, когда я пытаюсь отправить электронное письмо, я получаю сообщение об ошибке, в котором говорится, что сервер 127.0.0.1:25 не отвечает. Это, очевидно, означает, что настройки в базе данных не используются.
Это еще раз подтверждается, когда я не включаю адрес отправителя при отправке электронного письма. Я получаю сообщение о том, что DefaultFromAddress является нулевым или пустым. Это не тот случай, так как я подтвердил, что он присутствует в таблице настроек базы данных.
Вот код, который я использую для отправки электронного письма. Все вышеперечисленные ошибки генерируются в секции catch оператора try
try
{
_emailSender.Send(
to: userId.EmailAddress,
from: "system@x.co.uk",
subject: "New Upload",
body: $"A new upload is assigned to you: <b>{upload.DisplayName}</b>",
isBodyHtml: true
);
}
catch (Exception e)
{
throw;
}