/// <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; } }
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); }
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); }
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); }
public override string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic) { throw new NotImplementedException(); }
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; } }
public abstract string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic);
/// <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); }