示例#1
0
        public void OpenMailPageByTemplate(MailTemplateMessage message, MailPageSetting setting, Action <MailResult> callback)
        {
            var msg = new MailTemplatePageMessage {
                MailMessage = message, MailPageSetting = setting
            };

            CPApplication.Current.Browser.LoadingSpin.Show();
            LogMail(msg, (messageID) =>
            {
                CPApplication.Current.Browser.LoadingSpin.Hide();
                OpenPageInternal(messageID);

                if (callback != null)
                {
                    if (this.m_timer != null)
                    {
                        this.m_timer.Start();
                    }

                    lock (s_syncObj)
                    {
                        this.m_tasks.Add(new MailTask {
                            MessageID = messageID, Action = callback, ProcessCount = 0
                        });
                    }
                }
            });
        }
示例#2
0
        public void OpenMultiMailPage(List <MailMessage> messages, MailPageSetting setting, Action <MailResult> callback)
        {
            if (messages != null && setting != null)
            {
                foreach (var msg in messages)
                {
                    Guid temp = Guid.Empty;

                    if (!Guid.TryParse(msg.ID, out temp))
                    {
                        throw new ArgumentException("MailMessage.ID must be a Guid.");
                    }
                }

                var count      = messages.Count;
                var parameter  = new StringBuilder();
                var messageIDs = new List <string>();

                CPApplication.Current.Browser.LoadingSpin.Show();
                foreach (var msg in messages)
                {
                    LogMail(new MailPageMessage {
                        MailMessage = msg, MailPageSetting = setting
                    }, (msgID) =>
                    {
                        lock (s_syncObj)
                        {
                            messageIDs.Add(msgID);
                            parameter.Append(string.Format("{0},", msgID));
                        }

                        if (Interlocked.Decrement(ref count) <= 0)
                        {
                            CPApplication.Current.Browser.LoadingSpin.Hide();
                            OpenMultiMailPage(parameter.ToString().Trim().TrimEnd(','));

                            if (callback != null)
                            {
                                if (this.m_batchTimer != null)
                                {
                                    this.m_batchTimer.Start();
                                }

                                lock (s_syncObj)
                                {
                                    this.m_batchTasks.Add(new BatchMailTask
                                    {
                                        MessageIDs   = messageIDs,
                                        Callback     = callback,
                                        ProcessCount = 0
                                    });
                                }
                            }
                        }
                    });
                }
            }
        }
示例#3
0
        public static void LogPageSetting(string messageID, MailPageSetting setting)
        {
            var dataCommand = DataCommandManager.GetDataCommand("CreatePageSetting");

            dataCommand.SetParameterValue("@MessageID", messageID);
            dataCommand.SetParameterValue("@IsAllowEdit", ConvertToString(setting.IsAllowEdit));
            dataCommand.SetParameterValue("@IsAllowSend", ConvertToString(setting.IsAllowSend));
            dataCommand.SetParameterValue("@IsAllowChangeMailFrom", ConvertToString(setting.IsAllowChangeMailFrom));
            dataCommand.SetParameterValue("@IsAllowChangeMailTo", ConvertToString(setting.IsAllowChangeMailTo));
            dataCommand.SetParameterValue("@IsAllowChangeMailSubject", ConvertToString(setting.IsAllowChangeMailSubject));
            dataCommand.SetParameterValue("@IsAllowChangeMailBody", ConvertToString(setting.IsAllowChangeMailBody));
            dataCommand.SetParameterValue("@IsAllowCC", ConvertToString(setting.IsAllowCC));
            dataCommand.SetParameterValue("@IsAllowBCC", ConvertToString(setting.IsAllowBCC));
            dataCommand.SetParameterValue("@IsAllowAttachment", ConvertToString(setting.IsAllowAttachment));

            dataCommand.ExecuteNonQuery();
        }
示例#4
0
        /// <summary>
        /// 记录MailMessage的信息到DB
        /// </summary>
        /// <param name="message"></param>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static string LogMail(MailMessage message, MailPageSetting setting)
        {
            if (message == null)
            {
                throw new ArgumentNullException("MailMessage");
            }

            using (var scope = new TransactionScope())
            {
                if (!string.IsNullOrWhiteSpace(message.TemplateID))
                {
                    message.IsSentByTemplate = true;
                }
                else
                {
                    message.IsSentByTemplate = false;
                }

                //记录MailMessage的信息
                message.MessageID = MailDA.LogMailMessage(message);

                //记录BusinessNumber的信息
                if (message.BusinessNumberList != null && message.BusinessNumberList.Count > 0)
                {
                    MailDA.LogBusinessNumber(message.MessageID, message.BusinessNumberList);
                }
                //记录MailTemplateVariable的信息
                if (!string.IsNullOrWhiteSpace(message.TemplateID) && message.MailTemplateVariables != null)
                {
                    MailDA.LogTemplateVariable(message.MessageID, message.MailTemplateVariables);
                }

                //记录PageSetting的信息
                if (setting != null)
                {
                    MailDA.LogPageSetting(message.MessageID, setting);
                }

                scope.Complete();
            }
            return(message.MessageID);
        }
示例#5
0
        private bool AreSendByTemplate(MailPageSetting setting)
        {
            if (!setting.IsAllowEdit)
            {
                return(true);
            }

            if (setting.IsAllowChangeMailFrom)
            {
                return(false);
            }
            if (setting.IsAllowChangeMailSubject)
            {
                return(false);
            }
            if (setting.IsAllowChangeMailBody)
            {
                return(false);
            }

            return(true);
        }
示例#6
0
 public void OpenMailPageByTemplate(MailTemplateMessage message, MailPageSetting setting)
 {
     this.OpenMailPageByTemplate(message, setting, null);
 }
示例#7
0
 public void OpenMailPage(MailMessage message, MailPageSetting setting)
 {
     this.OpenMailPage(message, setting, null);
 }