Esempio n. 1
0
        /// <summary>
        /// 发送邮件By DataRow 由windows服务调取发送
        /// </summary>
        /// <param name="dr"></param>
        /// <returns></returns>
        public bool SendEmail(DataRow dr)
        {
            string inmail    = dr[Tnsmtp_Email._INMAIL].ToString();
            string tomail    = dr[Tnsmtp_Email._TOMAIL].ToString();
            string subject   = dr[Tnsmtp_Email._SUBJECT].ToString();
            string content   = dr[Tnsmtp_Email._CONTENT].ToString();
            int    accountid = int.Parse(dr[Tnsmtp_Email._ACCOUNT_ID].ToString());
            int    mailid    = int.Parse(dr[Tnsmtp_Email._MAIL_ID].ToString());
            int    userid    = int.Parse(dr[Tnsmtp_Email._USERID].ToString());
            string bccstr    = dr[Tnsmtp_Email._BCC].ToString();
            string wccstr    = dr[Tnsmtp_Email._WCC].ToString();

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

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

            #region 获取附件信息
            Dictionary <string, string> filelist  = new Dictionary <string, string>();
            AttchmentFacade             attchment = new AttchmentFacade();
            if (!attchment.GetAttchment(mailid, userid, out filelist))
            {
                Alert("获取附件失败");
                return(false);
            }
            #endregion



            #region 增加回执


            content = Receipt.SetReceipt(content, mailid);

            #endregion

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


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


            if (!Entites.Tool.SplitContact.GetCCArray(bccstr, out Bcc))
            {
                Log.Info("密送联系人地址有误!");
                Alert("密送联系人地址有误");

                return(false);
            }


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


            #endregion

            try
            {
                SmtpMail smtp = new SmtpMail();
                smtp.AddRecipient(inmail);

                smtp.MailDomain     = tnsmtp_Mailtype.SmtpUrl;
                smtp.Html           = true;
                smtp.From           = tomail;
                smtp.FromName       = tomail;
                smtp.RecipientName  = inmail;
                smtp.MailDomainPort = tnsmtp_Mailtype.SmtpSsl;
                smtp.Subject        = subject;
                smtp.Body           = content;
                smtp.AttachmentFile = filelist;

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

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



                if (!smtp.Send())
                {
                    Alert(smtp.PromptInfo.Message);
                    return(false);
                }
                return(true);
            }
            catch (Exception e)
            {
                Alert(e.Message);
                return(false);
            }
        }