由于发件人每天或每小时只能发送有限的电子邮件,我需要根据接收者的数量选择合适的发件人,我正在使用FluentEmail Mailkit发件人并尝试这样做,但仍然从DI中配置的默认发件人发送邮件。
fluentEmail.Sender = GetFluentEmailSender(fluentEmail.Sender, fluentEmail.Data.ToAddresses.Count);
DI配置:
services.AddFluentEmail(defaultFromEmail, defaultFromName).
AddRazorRenderer(templateRootFolder);
services.AddSingleton<ISender>(new MailKitSender(
new SmtpClientOptions
{
Server = notificationSettings.EmailSettings.MailKitSender.Server,
Port = notificationSettings.EmailSettings.MailKitSender.Port,
Password = password,
UseSsl = notificationSettings.EmailSettings.MailKitSender.UseSsl,
User = notificationSettings.EmailSettings.MailKitSender.UserName,
SocketOptions = (MailKit.Security.SecureSocketOptions)notificationSettings.EmailSettings.MailKitSender.SocketOptions,
RequiresAuthentication = notificationSettings.EmailSettings.MailKitSender.RequiresAuthentication
}
));
这是个窃听器还是我滥用了它?
发布于 2022-04-21 10:03:56
也许您不太了解Asp.Net核心应用程序是如何启动的。如果您感兴趣,您可以阅读源代码。
简而言之,启动文件中的服务注册只执行一次,这就是为什么不能在services.AddSingleton<ISender>
中修改发送方信息的原因。
如果您想更改发件人的信息,我建议您可以创建IEmailService
,在这种方法中,我们可以从appsettings.json
文件中读取配置。我们只需要在没有寄件人信息的情况下注册这个移民服务。
您可以参考以下博客:
https://stackoverflow.com/questions/71871504
复制相似问题