JuCheap.Web/Jobs/EmailJob.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Linq;
using JuCheap.Core.Email;
using JuCheap.Core.Log;
using JuCheap.Service.Abstracts;
using JuCheap.Service.Config;
using JuCheap.Service.Enum;
using Quartz;

namespace JuCheap.Web.Jobs
{
    /// <summary>
    /// 邮件发送Job
    /// </summary>
    public class EmailJob : IJob
    {
        public IEmailPoolService emailPoolService { get; set; }

        /// <summary>
        /// Execute
        /// </summary>
        /// <param name="context"></param>
        public void Execute(IJobExecutionContext context)
        {
            var smtp = FTMailBase.Instance;
            var setting = EmailConfiguration.Setting;
            smtp.From = setting.Email;
            var list = emailPoolService.GetWithReceivers(10);

            if (list != null && list.Any())
            {
                list.ForEach(item =>
                {
                    try
                    {
                        var receivers =
                            item.Receivers.Where(r => r.Type == EmailReceiverType.收件人).Select(r => r.Email).ToList();
                        var ccs =
                            item.Receivers.Where(r => r.Type == EmailReceiverType.抄送人).Select(r => r.Email).ToList();
                        smtp.To = receivers;
                        smtp.CC = ccs;
                        smtp.Subject = item.Title;
                        smtp.Body = item.Content;
                        var flag = smtp.Send(setting.SmtpServer, setting.Port, setting.Email, setting.Password, false);
                        if (flag)
                        {
                            item.Status = EmailStatus.已发送;
                            item.ActualSendTime = DateTime.Now;
                        }
                        else
                        {
                            item.FailTimes += 1;
                            if (item.FailTimes >= 3)//发送失败次数,就不再发送;
                                item.Status = EmailStatus.发送失败;
                        }
                        emailPoolService.Update(item);
                    }
                    catch (Exception ex)
                    {
                        Logger.Log("定时任务发送邮件失败", ex);
后面还有 6 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。