Отправка электронной почты в abp io с выбрасыванием SmtpEmailSender Ввод не является допустимой строкой Base-64

Я пытался в течение недели заставить отправку электронной почты работать, но безуспешно. мой тест заключался в отправке электронной почты для сброса пароля

appsettings.json

appsettings.json

поставщик настроек моего приложения

введите здесь описание изображения

и DomainModule моего приложения

введите здесь описание изображения

Я просматривал официальную документацию, но, к сожалению, для меня она расплывчатая и не подробная.

после того, как я нажму забыл пароль, введите адрес электронной почты и нажмите «Отправить», появляется эта ошибка

FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
System.Convert.FromBase64CharPtr(Char* inputPtr, int inputLength)
System.Convert.FromBase64String(string s)
Volo.Abp.Security.Encryption.StringEncryptionService.Decrypt(string cipherText, string passPhrase, byte[] salt)
Volo.Abp.Settings.SettingEncryptionService.Decrypt(SettingDefinition settingDefinition, string encryptedValue)
Volo.Abp.Settings.SettingProvider.GetOrNullAsync(string name)
Volo.Abp.Emailing.EmailSenderConfiguration.GetNotEmptySettingValueAsync(string name)
Volo.Abp.Emailing.Smtp.SmtpEmailSender.BuildClientAsync()
Volo.Abp.Emailing.Smtp.SmtpEmailSender.SendEmailAsync(MailMessage mail)
Volo.Abp.Emailing.EmailSenderBase.SendAsync(MailMessage mail, bool normalize)
Volo.Abp.Emailing.EmailSenderBase.SendAsync(string to, string subject, string body, bool isBodyHtml)
Volo.Abp.Account.Emailing.AccountEmailer.SendPasswordResetLinkAsync(IdentityUser user, string resetToken, string appName, string returnUrl, string returnUrlHash)
Volo.Abp.Account.AccountAppService.SendPasswordResetCodeAsync(SendPasswordResetCodeDto input)

abp
person Stefan Ivovic    schedule 12.04.2021    source источник


Ответы (1)


вам нужно сохранить зашифрованную версию вашего пароля в appsettings.json

просто используйте этот фрагмент где-нибудь в своем приложении

public class EmailSettingProvider : SettingDefinitionProvider
{
    private readonly ISettingEncryptionService encryptionService;

    public EmailSettingProvider(ISettingEncryptionService encryptionService)
    {
        this.encryptionService = encryptionService;
    }

    public override void Define(ISettingDefinitionContext context)
    {
        var passSetting = context.GetOrNull("Abp.Mailing.Smtp.Password");
        if(passSetting!=null)
        {
            string debug = encryptionService.Encrypt(passSetting,"1q2w3e$R");
        }
    }
}  

установите точку останова и скопируйте значение переменной debug в файл appsettings.json, и это все, что вам нужно.

person Modar Na    schedule 14.04.2021