Пример #1
0
        /// <summary>
        /// 发送候选的邮件
        /// </summary>
        /// <param name="batchCount"></param>
        /// <param name="sp"></param>
        public void SendCandidateMessages(int batchCount, SmtpParameters sp)
        {
            sp.NullCheck("sp");

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                EmailMessageCollection messages = LoadCandidateMessages(batchCount);

                this.Send(messages, sp);

                this.DeleteEmailMessagesMainData(messages);

                scope.Complete();
            }
        }
Пример #2
0
        public void Send(IEnumerable <EmailMessage> messages, SmtpParameters sp, bool throwError = false)
        {
            messages.NullCheck("messages");
            sp.NullCheck("sp");

            sp.CheckParameters();

            using (SmtpClient client = sp.ToSmtpClient())
            {
                foreach (EmailMessage message in messages)
                {
                    EmailMessage clonedMessage = message.Clone();

                    if (clonedMessage.From == null)
                    {
                        clonedMessage.From = sp.DefaultSender;
                    }

                    try
                    {
                        clonedMessage.Attachments.ForEach(ea => ea.PrepareContent());
                        client.Send(clonedMessage.ToMailMessage());
                        clonedMessage.Status = EmailMessageStatus.Sent;
                    }
                    catch (System.Exception ex)
                    {
                        if (throwError)
                        {
                            throw;
                        }

                        clonedMessage.Status     = EmailMessageStatus.Fail;
                        clonedMessage.StatusText = ex.ToString();
                    }

                    if (sp.AfterSentOP == EmailMessageAfterSentOP.MoveToSentTable ||
                        (sp.AfterSentOP == EmailMessageAfterSentOP.OnlyPersistErrorMessages && clonedMessage.Status == EmailMessageStatus.Fail))
                    {
                        InsertSentMessage(clonedMessage);
                    }
                }
            }
        }
        public void Send(IEnumerable<EmailMessage> messages, SmtpParameters sp)
        {
            messages.NullCheck("messages");
            sp.NullCheck("sp");

            sp.CheckParameters();

            using (SmtpClient client = sp.ToSmtpClient())
            {
                foreach (EmailMessage message in messages)
                {
                    EmailMessage clonedMessage = message.Clone();

                    if (clonedMessage.From == null)
                        clonedMessage.From = sp.DefaultSender;

                    try
                    {
                        clonedMessage.Attachments.ForEach(ea => ea.PrepareContent());
                        client.Send(clonedMessage.ToMailMessage());
                        clonedMessage.Status = EmailMessageStatus.Sent;
                    }
                    catch (System.Exception ex)
                    {
                        clonedMessage.Status = EmailMessageStatus.Fail;
                        clonedMessage.StatusText = ex.ToString();
                    }

                    if (sp.AfterSentOP == EmailMessageAfterSentOP.MoveToSentTable ||
                        (sp.AfterSentOP == EmailMessageAfterSentOP.OnlyPersistErrorMessages && clonedMessage.Status == EmailMessageStatus.Fail))
                    {
                        InsertSentMessage(clonedMessage);
                    }
                }
            }
        }
        /// <summary>
        /// 发送候选的邮件
        /// </summary>
        /// <param name="batchCount"></param>
        /// <param name="sp"></param>
        public void SendCandidateMessages(int batchCount, SmtpParameters sp)
        {
            sp.NullCheck("sp");

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                EmailMessageCollection messages = LoadCandidateMessages(batchCount);

                this.Send(messages, sp);

                this.DeleteEmailMessagesMainData(messages);

                scope.Complete();
            }
        }