Exemple #1
0
        /// <summary>
        /// 推送消息到移动端App。
        /// </summary>
        /// <param name="billAction">本次消息对应的单据操作种类。不同的app支持的操作种类不一样。</param>
        /// <param name="paramObj"></param>
        public static void PushCore(BillAction billAction, LibMailParam paramObj)
        {
            LibMailParam param = paramObj as LibMailParam;

            try
            {
                List <PushTarget> listTarget = GetPushTarget(billAction, param.PersonId, param.To, param.CC);
                if (listTarget == null || listTarget.Count == 0)
                {
                    return;
                }
                NoticeMsg msg = new NoticeMsg()
                {
                    Message = param.Content,
                    Title   = param.Subject
                };
                PushParams pushParams = new PushParams()
                {
                    Message = msg,
                    Targets = listTarget
                };
                //调用服务接口推送
                LibAppPushService.Push(pushParams);
            }
            catch
            {
                //throw;
            }
        }
Exemple #2
0
        public override string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
        {
            string html = string.Empty;
            string path = Path.Combine(EnvProvider.Default.MainPath, "Resource", "MailTpl", "ApproveMailTpl.html");

            using (FileStream fs = new FileStream(path, FileMode.Open))
            {
                using (StreamReader reader = new StreamReader(fs, Encoding.Default))
                {
                    html = reader.ReadToEnd();
                }
            }
            html.Replace("@BILL", param.ProgName);
            html.Replace("@USER", addressDic[param.UserId][0]);
            html.Replace("@DATE", DateTime.Now.ToShortDateString());
            html.Replace("@TEXT", param.Content);
            if (param.ExpandData.ContainsKey("@IMG"))
            {
                string base64    = param.ExpandData["@IMG"];
                string imageName = string.Format("{0}-{1}.png", LibDateUtils.GetCurrentDateTime(), LibCommUtils.GetInternalId());
                string imgUrl    = Path.Combine(".", "PublicData", "Mail", "Image", imageName);
                using (FileStream fs = new FileStream(imgUrl, FileMode.Create))
                {
                    byte[] imageBytes = Convert.FromBase64String(base64);
                    fs.Write(imageBytes, 0, imageBytes.Length);
                }
                html.Replace("@IMG", imgUrl);
            }
            html.Replace("@LINK", "");
            return(html);
        }
Exemple #3
0
        private string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
        {
            string     html    = string.Empty;
            LibMailTpl mailTpl = null;

            switch (param.MailKind)
            {
            case LibMailKind.Info:
                mailTpl = new LibInfoMailTpl();
                break;

            case LibMailKind.Approve:
                mailTpl = new LibApproveMailTpl();
                break;

            case LibMailKind.Warning:
                mailTpl = new LibWarningMailTpl();
                break;

            case LibMailKind.Problem:
                mailTpl = new LibProblemMailTpl();
                break;
            }
            html = mailTpl.GetMailBody(param, addressDic);
            return(html);
        }
Exemple #4
0
        private static SendSMSParam GetSendParam(LibMailParam sendMailParam, bool isWeixin)
        {
            if (sendMailParam == null || string.IsNullOrEmpty(sendMailParam.Content) || string.IsNullOrEmpty(sendMailParam.Content.TrimEnd()))
            {
                return(null);
            }
            List <string> weixinList = new List <string>();
            List <string> phoneList  = new List <string>();

            phoneList = GetSendPhoneList(sendMailParam, out weixinList);
            SendSMSParam smsParam = new SendSMSParam()
            {
                Message   = sendMailParam.Content.TrimEnd(),
                PhoneList = (isWeixin) ? weixinList : phoneList
            };

            return(smsParam);
        }
Exemple #5
0
 public override string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
 {
     throw new NotImplementedException();
 }
Exemple #6
0
        public void SendMail(LibMailParam param)
        {
            LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(param.Handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            try
            {
                //确定smtp服务器地址。实例化一个Smtp客户端
                System.Net.Mail.SmtpClient    client     = new System.Net.Mail.SmtpClient(EnvProvider.Default.MailProvider.Host);
                Dictionary <string, string[]> addressDic = GetMailAddress(param.UserId, param.To, param.CC);
                string[] sendInfo = addressDic[param.UserId];
                //构造一个Email的Message对象
                MailMessage message = new MailMessage();
                message.From = new MailAddress(sendInfo[1], sendInfo[0], Encoding.UTF8);
                foreach (var item in param.To)
                {
                    string[] info = addressDic[item];
                    message.To.Add(new MailAddress(info[1], info[0], Encoding.UTF8));
                }
                foreach (var item in param.CC)
                {
                    string[] info = addressDic[item];
                    message.CC.Add(new MailAddress(info[1], info[0], Encoding.UTF8));
                }
                //为 message 添加附件
                foreach (string fileName in param.AttachmentList)
                {
                    //判断文件是否存在
                    string fileFullPath = Path.Combine(EnvProvider.Default.MainPath, "Resource", "Public", "Mail", "Attachment", fileName);
                    if (File.Exists(fileFullPath))
                    {
                        //构造一个附件对象
                        Attachment attach = new Attachment(fileFullPath);
                        //得到文件的信息
                        ContentDisposition disposition = attach.ContentDisposition;
                        disposition.CreationDate     = System.IO.File.GetCreationTime(fileFullPath);
                        disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileFullPath);
                        disposition.ReadDate         = System.IO.File.GetLastAccessTime(fileFullPath);
                        //向邮件添加附件
                        message.Attachments.Add(attach);
                    }
                }
                //添加邮件主题和内容
                message.Subject         = param.Subject;
                message.SubjectEncoding = Encoding.UTF8;
                //设置邮件的信息
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                message.BodyEncoding  = System.Text.Encoding.UTF8;
                message.IsBodyHtml    = true;
                message.Body          = GetMailBody(param, addressDic);
                //如果服务器支持安全连接,则将安全连接设为true。
                //gmail支持,163不支持,如果是gmail则一定要将其设为true
                client.EnableSsl = false;
                //if (cmbBoxSMTP.SelectedText == "smpt.163.com")
                //    client.EnableSsl = false;
                //else
                //    client.EnableSsl = true;
                //设置用户名和密码。
                //string userState = message.Subject;
                client.UseDefaultCredentials = false;
                string username = EnvProvider.Default.MailProvider.MailSys;
                string passwd   = EnvProvider.Default.MailProvider.MailPwd;
                //用户登陆信息
                NetworkCredential myCredentials = new NetworkCredential(username, passwd);
                client.Credentials = myCredentials;
                //发送邮件
                client.Send(message);
            }
            catch
            {
                throw;
            }
        }
Exemple #7
0
 public abstract string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic);
Exemple #8
0
        /// <summary>
        /// 根据信息发送参数中的收件人、抄送人等获取各用户对应手机号
        /// </summary>
        /// <param name="sendMailParam">消息参数</param>
        /// <param name="weixinList">人员Id对应的微信号列表,如果人员表没有微信号字段,或者微信号字段为空,则使用手机号</param>
        /// <returns></returns>
        private static List <string> GetSendPhoneList(LibMailParam sendMailParam, out List <string> weixinList)
        {
            List <string> personIdList = new List <string>();
            List <string> phoneList    = new List <string>();

            weixinList = new List <string>();
            if (sendMailParam == null)
            {
                return(phoneList);
            }
            if (string.IsNullOrEmpty(sendMailParam.PersonId) == false && personIdList.Contains(sendMailParam.PersonId) == false)
            {
                personIdList.Add(sendMailParam.PersonId);
            }
            if (sendMailParam.To != null)
            {
                foreach (string per in sendMailParam.To)
                {
                    if (personIdList.Contains(per) == false && personIdList.Contains(per) == false)
                    {
                        personIdList.Add(per);
                    }
                }
            }
            if (sendMailParam.CC != null)
            {
                foreach (string per in sendMailParam.CC)
                {
                    if (personIdList.Contains(per) == false && personIdList.Contains(per) == false)
                    {
                        personIdList.Add(per);
                    }
                }
            }
            if (personIdList.Count == 0)
            {
                return(phoneList);
            }
            StringBuilder builder = new StringBuilder();

            personIdList.ForEach(personId =>
            {
                builder.AppendFormat("{0},", LibStringBuilder.GetQuotString(personId));
            });
            if (builder.Length > 0)
            {
                builder.Remove(builder.Length - 1, 1);
                bool        existsWeixin = false;
                LibSqlModel sqlModel     = LibSqlModelCache.Default.GetSqlModel("com.Person");
                if (sqlModel != null && sqlModel.Tables.Count > 0 && sqlModel.Tables[0].Columns.Contains("WECHAT"))
                {
                    existsWeixin = true;
                }
                LibDataAccess dataAccess = new LibDataAccess();
                string        sql        = string.Empty;
                if (existsWeixin)
                {
                    sql = string.Format("select PHONENO,WECHAT from COMPERSON " +
                                        " where PERSONID in ({0})", builder.ToString());
                    using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
                    {
                        while (reader.Read())
                        {
                            string phoneNo = LibSysUtils.ToString(reader[0]);
                            string weixin  = LibSysUtils.ToString(reader[1]);
                            if (string.IsNullOrEmpty(phoneNo) == false)
                            {
                                phoneList.Add(phoneNo);
                                if (string.IsNullOrEmpty(weixin) == false)
                                {
                                    weixinList.Add(weixin);
                                }
                                else
                                {
                                    weixinList.Add(phoneNo);
                                }
                            }
                            else
                            {
                                if (string.IsNullOrEmpty(weixin) == false)
                                {
                                    weixinList.Add(weixin);
                                }
                            }
                        }
                    }
                }
                else
                {
                    sql = string.Format("select PHONENO from COMPERSON " +
                                        " where PERSONID in ({0})", builder.ToString());
                    using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
                    {
                        while (reader.Read())
                        {
                            string phoneNo = LibSysUtils.ToString(reader[0]);
                            if (string.IsNullOrEmpty(phoneNo) == false)
                            {
                                phoneList.Add(phoneNo);
                                weixinList.Add(phoneNo);
                            }
                        }
                    }
                }
            }
            return(phoneList);
        }