posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1、在EntityFramework项目中:Migrations/SeedData/DefaultSettingsCreator.cs中配置邮件服务:

复制代码
public void Create()
        {
            #region Emailing
            string mail_smtp = ConfigurationManager.AppSettings["mail_smtp"];
            string mail_main = ConfigurationManager.AppSettings["mail_main"];
            string mail_pwd = ConfigurationManager.AppSettings["mail_pwd"];
            string mail_port = ConfigurationManager.AppSettings["mail_port"];
            string mail_ssl = ConfigurationManager.AppSettings["mail_ssl"];
            string mail_name = ConfigurationManager.AppSettings["mail_name"];

            AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, mail_main);
            AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, mail_name);
            AddSettingIfNotExists(EmailSettingNames.Smtp.Port, mail_port);
            AddSettingIfNotExists(EmailSettingNames.Smtp.Host, mail_smtp);
            AddSettingIfNotExists(EmailSettingNames.Smtp.UserName, mail_main);
            AddSettingIfNotExists(EmailSettingNames.Smtp.Password, mail_pwd);
            AddSettingIfNotExists(EmailSettingNames.Smtp.Domain, "");
            AddSettingIfNotExists(EmailSettingNames.Smtp.EnableSsl, mail_ssl);
            AddSettingIfNotExists(EmailSettingNames.Smtp.UseDefaultCredentials, "false");
            #endregion

            //Languages
            AddSettingIfNotExists(LocalizationSettingNames.DefaultLanguage, "en");
        }
复制代码

2、在Web项目中config配置邮件服务器

复制代码
<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <!-- 邮件服务 -->
    <add key="mail_smtp" value="smtp.exmail.qq.com" />
    <add key="mail_main" value="xxx@xxx.com" />
    <add key="mail_pwd" value="xxx" />
    <add key="mail_port" value="123" />
    <add key="mail_ssl" value="true" />
    <add key="mail_name" value="admin" />
  </appSettings>
复制代码

3、在项目Core中nuget安装:AbpMailKit,然后在Core中找到 xxxCoreModule.cs
using Abp.MailKit;

[DependsOn(typeof(AbpZeroCoreModule),typeof(AbpMailKitModule))]
    public class AbpFrameworkCoreModule : AbpModule{...}

4、在Core项目下面建一个类TaskManager

复制代码
using Abp.Domain.Services;
using Abp.Net.Mail;
using Abp.Net.Mail.Smtp;

namespace AbpFramework.Base
{
    public class TaskManager : IDomainService
    {
        private readonly IEmailSender _emailSender;

        public TaskManager(
        IEmailSender emailSender,
        ISmtpEmailSenderConfiguration smtpEmialSenderConfigtion
        )
        {
            _emailSender = emailSender;
        }
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="emailAddress">目标邮箱</param>
        /// <param name="subject">邮件标题</param>
        /// <param name="body">邮件内容</param>
        public void SendMail(string emailAddress, string subject, string body)
        {
            try
            {
                //TODO:发送一份邮件通知,所有调用该方法的地方的文档都需要坚持调整,暂时屏蔽邮件异常
                _emailSender.SendAsync(
                    to: emailAddress,
                    subject: subject,
                    body: body,
                    isBodyHtml: true
                );
            }
            catch (System.Exception ex)
            {
            }
        }
    }
}
复制代码

5、调用,在Application项目中

复制代码
[AbpAuthorize]
public class DispatchAppService : ApplicationService
{
    private readonly TaskManager _taskManager;
    public DispatchAppService(TaskManager taskManager)
    {
        _taskManager = taskManager;
    }
    public void SendMail()
    {
        _taskManager.SendMail("abc@abc.com", "标题", "Html内容");
    }
}
复制代码

 人家的邮件发送,有点复杂:https://www.cnblogs.com/Wddpct/p/5919507.html

posted on   邢帅杰  阅读(295)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示