如何解决在 abp io 中发送电子邮件并抛出 SmtpEmailSender 输入不是有效的 Base-64 字符串
我已经尝试了一个星期来让电子邮件发送到工作中,但没有运气。 我的测试是发送电子邮件以重置密码
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)
解决方法
您必须将密码的加密版本存储在 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 文件中,这就是您需要的全部配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。