Пример #1
0
        /// <summary>
        /// 添加邮件表数据
        /// </summary>
        /// <returns></returns>
        private bool SingleAddEmailTable(Tnsmtp_EmailMap model)
        {
            DataAccess.Tnsmtp_Email tnsmtp_Email = new DataAccess.Tnsmtp_Email();
            tnsmtp_Email.ReferenceTransactionFrom(this.Transaction);

            tnsmtp_Email.Bcc       = model.Bcc;
            tnsmtp_Email.AccountId = model.AccountId;
            tnsmtp_Email.Userid    = model.Userid;


            tnsmtp_Email.Content    = model.Content;
            tnsmtp_Email.Tomail     = model.Tomail;
            tnsmtp_Email.Inmail     = model.Inmail;
            tnsmtp_Email.Subject    = model.Subject;
            tnsmtp_Email.Wcc        = model.Wcc;
            tnsmtp_Email.Status     = 1;
            tnsmtp_Email.Senddate   = model.Senddate;
            tnsmtp_Email.FlagRead   = 0;
            tnsmtp_Email.FlagStatus = model.FlagStatus;

            if (!tnsmtp_Email.Insert())
            {
                Alert("添加邮件失败!");
                return(false);
            }


            model.MailId  = tnsmtp_Email.MailId;
            model.Content = Receipt.SetReceipt(model.Content, tnsmtp_Email.MailId);  //加入回执功能
            return(true);
        }
Пример #2
0
        private bool GroupAddEmailTable(Tnsmtp_EmailMap model)
        {
            DataAccess.Tnsmtp_Email tnsmtp_Email = new DataAccess.Tnsmtp_Email();
            tnsmtp_Email.ReferenceTransactionFrom(this.Transaction);

            tnsmtp_Email.Bcc       = model.Bcc;
            tnsmtp_Email.AccountId = model.AccountId;
            tnsmtp_Email.Userid    = model.Userid;


            tnsmtp_Email.Content    = model.Content;
            tnsmtp_Email.Tomail     = model.Tomail;
            tnsmtp_Email.Inmail     = model.Inmail;
            tnsmtp_Email.Subject    = model.Subject;
            tnsmtp_Email.Wcc        = model.Wcc;
            tnsmtp_Email.Status     = (int)Entites.EmailFlagStatus.群发;
            tnsmtp_Email.Senddate   = model.Senddate;
            tnsmtp_Email.FlagRead   = 0;
            tnsmtp_Email.FlagStatus = model.FlagStatus;

            if (!tnsmtp_Email.Insert())
            {
                Alert("添加邮件失败!");
                return(false);
            }


            return(true);
        }
Пример #3
0
        /// <summary>
        /// 系统标签替换收件人邮箱(普通邮件),没有收件人名字
        /// </summary>
        /// <param name="model"></param>
        /// <param name="mark"></param>
        /// <param name="replace"></param>
        /// <returns></returns>
        private bool ReplacceContactEmailSingle(Tnsmtp_EmailMap model, string mark, out string replace)
        {
            if (!model.Content.Contains(mark))
            {
                replace = model.Content;
                return(false);
            }

            replace = model.Content.Replace(mark, model.Inmail);
            return(true);
        }
Пример #4
0
        /// <summary>
        /// 添加联系人表数据
        /// </summary>
        /// <returns></returns>
        private bool AddContactTable(Tnsmtp_EmailMap model)
        {
            DataAccess.Tnsmtp_Contact tnsmtp_Contact = new DataAccess.Tnsmtp_Contact();
            tnsmtp_Contact.ReferenceTransactionFrom(this.Transaction);
            if (tnsmtp_Contact.SelectByEmail(model.Userid, model.Inmail))
            {
                model.RecId = tnsmtp_Contact.ContactId;
            }


            if (!model.RecId.HasValue)
            {
                #region 如果用户没有 "常用联系人" 这个组则添加这个组


                DataAccess.Tnsmtp_Contactgroup tnsmtp_Contactgroup = new DataAccess.Tnsmtp_Contactgroup();
                tnsmtp_Contactgroup.ReferenceTransactionFrom(this.Transaction);
                if (!tnsmtp_Contactgroup.SelectByGroupName(model.Userid, "常用联系人"))
                {
                    tnsmtp_Contactgroup.Groupname = "常用联系人";
                    tnsmtp_Contactgroup.Userid    = model.Userid;
                    tnsmtp_Contactgroup.Status    = 0;
                    if (!tnsmtp_Contactgroup.Insert())
                    {
                        Alert("添加常用联系人分组失败");
                        return(false);
                    }
                }


                #endregion


                #region 添加联系人

                tnsmtp_Contact.ContactName = model.Inmail;
                tnsmtp_Contact.Email       = model.Inmail;
                tnsmtp_Contact.Gid         = tnsmtp_Contactgroup.Gid;
                tnsmtp_Contact.Status      = 0;
                tnsmtp_Contact.UserId      = model.Userid;
                tnsmtp_Contact.CateId      = 1;

                if (!tnsmtp_Contact.Insert())
                {
                    Alert("添加常用联系人失败");
                    return(false);
                }
                #endregion
            }

            return(true);
        }
Пример #5
0
        /// <summary>
        /// 标签替换
        /// </summary>
        /// <param name="model"></param>
        /// <param name="userid"></param>
        /// <param name="replace"></param>
        /// <returns></returns>
        public bool Replace(Tnsmtp_EmailMap model, int userid, out string replace)
        {
            string value = string.Empty;

            DataAccess.Tnsmtp_RaplcemarkCollection tnsmtp_Raplcemark = new DataAccess.Tnsmtp_RaplcemarkCollection();

            if (!tnsmtp_Raplcemark.ListByUser(userid))
            {
                replace = model.Content;
                Alert("获取模板信息失败!");
                return(false);
            }


            for (int i = 0; i < tnsmtp_Raplcemark.DataTable.Rows.Count; i++)
            {
                MarkKey markKey   = (MarkKey)int.Parse(tnsmtp_Raplcemark.DataTable.Rows[i]["rid"].ToString());
                string  markvalue = tnsmtp_Raplcemark.DataTable.Rows[i]["mark_value"].ToString();

                switch (markKey)
                {
                case MarkKey.收件人名称:

                    ReplacceContactName(model, markvalue, out value);
                    model.Content = value;
                    break;

                case MarkKey.收件人邮箱:
                    ReplacceContactEmailSingle(model, markvalue, out value);
                    model.Content = value;
                    break;

                case MarkKey.收件人电话:
                    break;
                }
            }
            replace = value;

            return(true);
        }
Пример #6
0
        public ActionResult Update(Tnsmtp_EmailMap model)
        {
            DataAccess.Tnsmtp_Email tnsmtp_Email = new DataAccess.Tnsmtp_Email();
            if (!tnsmtp_Email.SelectDraftByUserid(SysUser.UserId, model.MailId))
            {
                return(FailResult("修改失败!"));
            }
            tnsmtp_Email.Bcc       = model.Bcc;
            tnsmtp_Email.AccountId = model.AccountId;
            tnsmtp_Email.Content   = model.Content;
            tnsmtp_Email.Tomail    = model.Tomail;
            tnsmtp_Email.Inmail    = model.Inmail;
            tnsmtp_Email.Subject   = model.Subject;
            tnsmtp_Email.Wcc       = model.Wcc;
            tnsmtp_Email.Status    = 2;

            if (!tnsmtp_Email.Update())
            {
                return(FailResult("保存草稿失败!"));
            }
            return(SuccessResult("保持草稿成功!"));
        }
Пример #7
0
        public ActionResult Select(int mailid)
        {
            DataAccess.Tnsmtp_Email tnsmtp_Email = new DataAccess.Tnsmtp_Email();
            if (!tnsmtp_Email.SelectDraftByUserid(SysUser.UserId, mailid))
            {
                return(FailResult("查询失败!"));
            }

            Entites.Tnsmtp_EmailMap model = new Tnsmtp_EmailMap();

            model.Bcc       = tnsmtp_Email.Bcc;
            model.AccountId = tnsmtp_Email.AccountId;
            model.Content   = tnsmtp_Email.Content;
            model.Tomail    = tnsmtp_Email.Tomail;
            model.Inmail    = tnsmtp_Email.Inmail;
            model.Subject   = tnsmtp_Email.Subject;
            model.Wcc       = tnsmtp_Email.Wcc;
            model.Status    = tnsmtp_Email.Status;


            return(SuccessResult(model));
        }
Пример #8
0
        /// <summary>
        /// 添加附件表数据
        /// </summary>
        /// <returns></returns>
        public bool AddAtthachmentTable(Tnsmtp_EmailMap model, Tnsmtp_Account tnsmtp_Account, out Dictionary <string, string> filelist)
        {
            Dictionary <string, string> dic = new Dictionary <string, string>();

            if (model.Atthachment == null || model.Atthachment.Length <= 0)
            {
                filelist = dic;
                return(true);
            }


            foreach (var file in model.Atthachment)
            {
                DataAccess.Tnsmtp_Attachment tnsmtp_Attachment = new DataAccess.Tnsmtp_Attachment();
                tnsmtp_Attachment.ReferenceTransactionFrom(this.Transaction);

                tnsmtp_Attachment.AccountId = tnsmtp_Account.Aid;
                tnsmtp_Attachment.FileUrl   = file;
                tnsmtp_Attachment.FileName  = Path.GetFileName(file);
                tnsmtp_Attachment.MailId    = model.MailId;
                tnsmtp_Attachment.Status    = 0;
                tnsmtp_Attachment.UserId    = model.Userid;
                string path = HttpContext.Current.Server.MapPath("~/File/UserFile/" + model.Userid + "/Attachment/" + tnsmtp_Attachment.FileName);

                tnsmtp_Attachment.Remarks = path;   //保存物理路径

                if (!tnsmtp_Attachment.Insert())
                {
                    filelist = dic;
                    return(false);
                }



                dic.Add(tnsmtp_Attachment.FileName, path);
            }
            filelist = dic;
            return(true);
        }
Пример #9
0
        /// <summary>
        /// 向用户发送普通邮件====即时发送
        /// </summary>
        public bool SingleSend(Tnsmtp_EmailMap model)
        {
            BeginTransaction();

            #region 前期准备工作

            #region 获取发件账户信息
            DataAccess.Tnsmtp_Account tnsmtp_Account = new DataAccess.Tnsmtp_Account();
            if (!tnsmtp_Account.SelectByPK(model.AccountId))
            {
                Rollback();
                Alert("获取发件账户失败");
                return(false);
            }
            #endregion

            #region 获取企业邮箱信息
            DataAccess.Tnsmtp_Mailtype tnsmtp_Mailtype = new DataAccess.Tnsmtp_Mailtype();
            if (!tnsmtp_Mailtype.SelectByPK(tnsmtp_Account.MailType))
            {
                Rollback();
                Alert("获取企业邮箱失败");
                return(false);
            }
            #endregion

            #region 判断收件人是否存在常用联系人,不存在则添加
            if (!AddContactTable(model))
            {
                Rollback();
                return(false);
            }

            #endregion

            #region 如果存在模板标签则替换模板标签
            string      content = string.Empty;
            ReplaceMark replace = new ReplaceMark();
            if (!replace.Replace(model, model.Userid, out content))
            {
                Rollback();
                Alert("替换模板标签失败!");
                return(false);
            }

            #endregion

            #region 添加数据库 邮件表

            model.Senddate = DateTime.Now;
            if (!SingleAddEmailTable(model))
            {
                Rollback();
                Alert("添加邮件失败");
                return(false);
            }

            #endregion

            #region 如果有附件,则添加附件到数据库
            Dictionary <string, string> filelist  = new Dictionary <string, string>();
            AttchmentFacade             attchment = new AttchmentFacade();
            if (!attchment.AddAtthachmentTable(model, tnsmtp_Account, out filelist))
            {
                Rollback();
                Alert("添加附件失败!");
                return(false);
            }

            #endregion

            #region 判断是否有抄送或者密送


            List <string> Bcc = new List <string>();
            List <string> Wcc = new List <string>();


            if (!Entites.Tool.SplitContact.GetCCArray(model.Bcc, out Bcc))
            {
                Alert("密送联系人地址有误");
                Rollback();
                return(false);
            }


            if (!Entites.Tool.SplitContact.GetCCArray(model.Wcc, out Wcc))
            {
                Alert("抄送联系人地址有误");
                Rollback();
                return(false);
            }


            #endregion


            #endregion

            try
            {
                #region 调用SMTP 发送邮件
                SmtpMail smtp = new SmtpMail();
                smtp.AddRecipient(model.Inmail);

                smtp.MailDomain     = tnsmtp_Mailtype.SmtpUrl;
                smtp.Html           = true;
                smtp.From           = model.Tomail;
                smtp.FromName       = model.Tomail;
                smtp.RecipientName  = model.Inmail;
                smtp.MailDomainPort = tnsmtp_Mailtype.SmtpSsl;
                smtp.Subject        = model.Subject;
                smtp.Body           = model.Content;
                smtp.AttachmentFile = filelist;

                smtp.MailServerUserName = tnsmtp_Account.Account;
                smtp.MailServerPassWord = tnsmtp_Account.Password;

                smtp.RecipientBCC1 = Bcc;
                smtp.RecipientWCC1 = Wcc;



                if (!smtp.Send())
                {
                    Rollback();
                    Alert(smtp.PromptInfo.Message);
                    return(false);
                }

                #endregion
            }
            catch (Exception e)
            {
                Log.Info("发送异常!" + e);
                Rollback();
                Alert(e.Message);
                return(false);
            }

            Commit();
            return(true);
        }
Пример #10
0
        /// <summary>
        /// 定时发送===等待服务去跑
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool SingleTimerSend(Tnsmtp_EmailMap model)
        {
            BeginTransaction();


            #region 获取发件账户信息
            DataAccess.Tnsmtp_Account tnsmtp_Account = new DataAccess.Tnsmtp_Account();
            if (!tnsmtp_Account.SelectByPK(model.AccountId))
            {
                Rollback();
                Alert("获取发件账户失败");
                return(false);
            }
            #endregion

            #region 获取企业邮箱信息
            DataAccess.Tnsmtp_Mailtype tnsmtp_Mailtype = new DataAccess.Tnsmtp_Mailtype();
            if (!tnsmtp_Mailtype.SelectByPK(tnsmtp_Account.MailType))
            {
                Rollback();
                Alert("获取企业邮箱失败");
                return(false);
            }
            #endregion

            #region 判断收件人是否存在常用联系人,不存在则添加
            if (!AddContactTable(model))
            {
                Rollback();
                return(false);
            }

            #endregion

            #region 如果存在模板标签则替换模板标签
            string      content = string.Empty;
            ReplaceMark replace = new ReplaceMark();
            if (!replace.Replace(model, model.Userid, out content))
            {
                Rollback();
                Alert("替换模板标签失败!");
                return(false);
            }

            #endregion

            #region 添加数据库 邮件表

            model.FlagStatus = (int)Entites.EmailFlagStatus.定时邮件;;

            if (!SingleAddEmailTable(model))
            {
                Rollback();
                Alert("添加邮件失败");
                return(false);
            }

            #endregion

            #region 如果有附件,则添加附件到数据库
            Dictionary <string, string> filelist  = new Dictionary <string, string>();
            AttchmentFacade             attchment = new AttchmentFacade();
            if (!attchment.AddAtthachmentTable(model, tnsmtp_Account, out filelist))
            {
                Rollback();
                Alert("添加附件失败!");
                return(false);
            }

            #endregion


            Commit();
            return(true);
        }
Пример #11
0
        /// <summary>
        /// 群发邮件====让服务即时去跑
        /// </summary>
        /// <param name="model"></param>
        /// <param name="Gid"></param>
        /// <returns></returns>
        public bool GroupSend(Tnsmtp_EmailMap model, int Gid)
        {
            BeginTransaction();

            #region 获取发件账户信息
            DataAccess.Tnsmtp_Account tnsmtp_Account = new DataAccess.Tnsmtp_Account();
            if (!tnsmtp_Account.SelectByPK(model.AccountId))
            {
                Rollback();
                Alert("获取发件账户失败");
                return(false);
            }
            #endregion

            #region 获取企业邮箱信息
            DataAccess.Tnsmtp_Mailtype tnsmtp_Mailtype = new DataAccess.Tnsmtp_Mailtype();
            if (!tnsmtp_Mailtype.SelectByPK(tnsmtp_Account.MailType))
            {
                Rollback();
                Alert("获取企业邮箱失败");
                return(false);
            }
            #endregion

            #region 如果存在模板标签则替换模板标签
            string      content = string.Empty;
            ReplaceMark replace = new ReplaceMark();
            if (!replace.Replace(model, model.Userid, out content))
            {
                Rollback();
                Alert("替换模板标签失败!");
                return(false);
            }

            #endregion


            DataAccess.Tnsmtp_ContactCollection tnsmtp_ContactCollection = new Tnsmtp_ContactCollection();

            if (!tnsmtp_ContactCollection.ListByUserid(model.Userid, string.Empty, Gid))
            {
                Rollback();
                Alert("查找分组联系人失败");
                return(false);
            }

            foreach (DataRow dr in tnsmtp_ContactCollection.DataTable.Rows)
            {
                model.FlagStatus = (int)Entites.EmailFlagStatus.群发;
                model.Inmail     = dr[Tnsmtp_Contact._EMAIL].ToString();

                if (!GroupAddEmailTable(model))
                {
                    Rollback();
                    Alert("添加邮件失败");
                    return(false);
                }


                Dictionary <string, string> filelist  = new Dictionary <string, string>();
                AttchmentFacade             attchment = new AttchmentFacade();
                if (!attchment.AddAtthachmentTable(model, tnsmtp_Account, out filelist))
                {
                    Rollback();
                    Alert("添加附件失败!");
                    return(false);
                }
            }



            Commit();
            return(true);
        }