Exemplo n.º 1
0
        private MailMessage MailMsgToMailMessage(MailMsg msg)
        {
            var mailMessage = new MailMessage();

            mailMessage.From = new MailAddress(_settingsService.GetSettings <string>("SystemEmailAddress"), _settingsService.GetSettings <string>("SystemEmailSenderName"));
            var receivers = msg.Receiver.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string receiver in receivers)
            {
                mailMessage.To.Add(new MailAddress(receiver));
            }
            mailMessage.Subject    = msg.Subject;
            mailMessage.IsBodyHtml = true;
            string body = _razorEngineService.RenderEmailMessage("TextMessage", msg.Body);

            mailMessage.Body = body;
            if (!String.IsNullOrWhiteSpace(msg.BccReceiver))
            {
                mailMessage.Bcc.Add(new MailAddress(msg.BccReceiver));
            }
            if (msg.AttachIds != null && msg.AttachIds.Any())
            {
                AttachFiles(mailMessage, msg.AttachIds);
            }
            return(mailMessage);
        }
Exemplo n.º 2
0
        //static void s_ConfigurationChangeWatcher_Changed(object sender, FileSystemEventArgs e)
        //{
        //    Configure(e.FullPath);
        //}

        void IMailTransportSubmission.OnMessageSubmission(
            MailMsg mailmsg,
            IMailTransportNotify notify,
            IntPtr context)
        {
            LogDebug("Invoking mail sink message submission callback.");

            try
            {
                Message message = new Message(mailmsg);
                LogDebug(string.Format("Processing message \"{0}\" ({1} byte(s)).", message.Rfc822MsgSubject, message.GetContentSize()));
                byte[] content  = message.ReadContent(0, message.GetContentSize());
                string filename = s_QueuePath + "\\" + message.Rfc822MsgId;
                filename = filename.Replace("<", "_").Replace(">", "_").Replace(" ", "_");
                LogDebug(string.Format("Dumping message \"{0}\" to {1}.", message.Rfc822MsgSubject, filename));
                File.WriteAllBytes(filename, content);
            }
            catch (Exception ex)
            {
                LogError(ex.Message + "\n" + ex.StackTrace.ToString());
            }
            finally
            {
                if (null != mailmsg)
                {
                    Marshal.ReleaseComObject(mailmsg);
                }
            }
        }
Exemplo n.º 3
0
        private static void sendMailThread(object obj)
        {
            MailMsg mailMsg = (MailMsg)obj;

            try
            {
                int num = MailAPI.GetInstance().SendEmail(mailMsg);
                if (num != ErrorCode.SUCCESS)
                {
                    int num2 = 0;
                    LogInfo.InsertNewLog(ref num2, "0120062", new string[]
                    {
                        mailMsg.Receiver,
                        mailMsg.Subject.Replace("\r\n", "")
                    });
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                if (LogAPI._mailerCounter > 0)
                {
                    Interlocked.Decrement(ref LogAPI._mailerCounter);
                }
            }
        }
Exemplo n.º 4
0
        void IMailTransportSubmission.OnMessageSubmission(
            MailMsg message,
            IMailTransportNotify notify,
            IntPtr context)
        {
            try
            {
                Message Msg = new Message(message);

                if (Debug)
                {
                    EventLog.WriteEntry(
                     Assembly.GetExecutingAssembly().FullName,
                     "Checking message " + Msg.Rfc822MsgId + " with subject \"" + Msg.Rfc822MsgSubject + "\".",
                     EventLogEntryType.Information);
                }

                RecipsAdd NewRecipients = Msg.AllocNewList();
                bool fReRouted = false;

                foreach (Recip Recipient in Msg.Recips)
                {
                    try
                    {
                        fReRouted |= ReRoute(Recipient, Msg, NewRecipients);
                    }
                    catch (Exception ex)
                    {
                        EventLog.WriteEntry(
                         Assembly.GetExecutingAssembly().FullName,
                         "Error routing message " + Msg.Rfc822MsgId + " to " + Recipient.SMTPAddress + "." + ex.Message,
                         EventLogEntryType.Error);
                    }
                }

                if (fReRouted)
                {
                    Msg.WriteList(NewRecipients);
                }

            }
            catch (Exception ex)
            {
                EventLog.WriteEntry(
                  Assembly.GetExecutingAssembly().FullName,
                  ex.Message + "\n" + ex.StackTrace.ToString(),
                  EventLogEntryType.Error);
            }
            finally
            {
                if (null != message)
                    Marshal.ReleaseComObject(message);
            }
        }
Exemplo n.º 5
0
        public void Send(MailMsg msg)
        {
            var mail    = Mapper.Map <RoCMS.Data.Models.Mail>(msg);
            var message = MailMsgToMimeMessage(msg);

            mail.MailId = _mailGateway.Insert(mail);
            MailSendResult sendResult = SendViaMailKit(message);

            mail.Sent         = sendResult.Success;
            mail.ErrorMessage = sendResult.ErrorMsg;
            _mailGateway.Update(mail);
        }
Exemplo n.º 6
0
        public object applyOn(SpotterFRPC spotter)
        {
            var msg = new MailMsg();

            foreach (var item in spotter.Items)
            {
                var methodCall = item as FRPCparser.FRPCMethodCall;
                if (methodCall == null || !methodCall.Name.Equals("user.message.send"))
                {
                    continue;
                }
                foreach (var param in methodCall.Parameters)
                {
                    var email = param as FRPCparser.FRPCStruct;
                    if (email == null)
                    {
                        continue;
                    }

                    foreach (var it in email.Items)
                    {
                        if (it.Key.Equals("subject"))
                        {
                            var itSubj = it.Value as FRPCparser.FRPCString;
                            msg.Subject = itSubj?.Value;
                        }
                        else if (it.Key.Equals("body"))
                        {
                            var itBody = it.Value as FRPCparser.FRPCString;
                            msg.Body = itBody?.Value;
                        }
                        else if (it.Key.Equals("to"))
                        {
                            var recips = it.Value as FRPCparser.FRPCArray;
                            if (recips != null)
                            {
                                msg.To = GetAddresses(recips);
                            }
                        }
                        else if (it.Key.Equals("from"))
                        {
                            var senders = it.Value as FRPCparser.FRPCArray;
                            if (senders != null)
                            {
                                msg.From = GetAddresses(senders);
                            }
                        }
                    }
                }
            }

            return(msg);
        }
Exemplo n.º 7
0
        private void SendAutoReply(string email, string name, string message)
        {
            string  template = _settingsService.GetSettings <string>("MailTmplOrderAutoReply");
            string  body     = string.Format(template, name, message);
            MailMsg reply    = new MailMsg
            {
                Subject  = "Ваша заявка принята",
                Receiver = email,
                Body     = body
            };

            _mailService.Send(reply);
        }
Exemplo n.º 8
0
        private void SendReviewNotification(string author, string authorEmail, string text)
        {
            string  template = _settingsService.GetSettings <string>("MailTmplReviewCreated");
            string  body     = string.Format(template, author, authorEmail, text);
            MailMsg reply    = new MailMsg
            {
                Subject  = "Кто-то оставил отзыв на сайте",
                Receiver = _settingsService.GetSettings <string>(nameof(Setting.OrderEmailAddress)),
                Body     = body
            };

            _mailService.Send(reply);
        }
Exemplo n.º 9
0
        private void SendOrderToInternalEmail(Order order,
                                              Client client)
        {
            string htmlString = _razorService.RenderEmailMessage("ShopOrderAdmin", new ShopOrderEmail {
                Order = order, Client = client
            });
            var msg = new MailMsg()
            {
                Receiver = _settingsService.GetSettings <string>("OrderEmailAddress"),
                Body     = htmlString,
                Subject  = "Заказ в интернет-магазине: " + DateTime.UtcNow.ApplySiteTimezone()
            };

            _mailService.Send(msg);
        }
Exemplo n.º 10
0
        private void SendOrderToClientEmail(Order order,
                                            Client client)
        {
            string htmlString = _razorService.RenderEmailMessage("ShopOrderClient", new ShopOrderEmail {
                Order = order, Client = client
            });
            var msg = new MailMsg()
            {
                Receiver = client.Email,
                Body     = htmlString,
                Subject  = "Заказ в интернет-магазине: " + DateTime.UtcNow.ApplySiteTimezone()
            };

            _mailService.Send(msg);
        }
Exemplo n.º 11
0
        public void SendAnswerToAuthor(int questionId)
        {
            var dataRec = _questionGateway.SelectOne(questionId);

            if (string.IsNullOrEmpty(dataRec.AuthorEmail))
            {
                throw new ArgumentException("Empty email", nameof(dataRec.AuthorEmail));
            }
            var msg = new MailMsg();

            msg.Subject  = "Ответ на вопрос";
            msg.Receiver = dataRec.AuthorEmail;
            msg.Body     = _razorEngineService.RenderEmailMessage("FAQAnswerMessage", Mapper.Map <Question>(dataRec));
            _mailService.Send(msg);
            dataRec.AnswerSentToAuthor = true;
            _questionGateway.Update(dataRec);
        }
Exemplo n.º 12
0
        public void UpdatePaymentState(int formRequestId, PaymentState?state, bool notify = false)
        {
            var req = _formRequestGateway.SelectOne(formRequestId);

            req.PaymentState = Mapper.Map <Data.Models.PaymentState>(state);
            _formRequestGateway.Update(req);

            if (notify)
            {
                string  body = $"Поступила оплата за заказ<br>Guid: {req.Guid}<br>Сумма: {req.Amount}";
                MailMsg res  = new MailMsg
                {
                    Subject  = $"Заказ оплачен: {req.Guid} {DateTime.UtcNow.ApplySiteTimezone()}",
                    Receiver = _settingsService.GetSettings <string>("OrderEmailAddress"),

                    Body = body
                };
                _mailService.Send(res);
            }
        }
Exemplo n.º 13
0
        public object applyOn(SpotterJson spotter)
        {
            var root = spotter.GetRoot();
            var mail = new MailMsg();

            if (root.XPathSelectElement("/result/message") != null)
            {
                // there should be only one message in response to display message
                foreach (var msg in root.XPathSelectElements("/result/message/item"))
                {
                    mail.Subject      = msg.XPathSelectElement("header/subject").Value;
                    mail.From         = msg.XPathSelectElement("header/from/email").Value;
                    mail.To           = YahooGetListedMessages.GetAllInArray(msg, "header/to//email", "; ");
                    mail.Cc           = YahooGetListedMessages.GetAllInArray(msg, "header/cc//email", "; ");
                    mail.Bcc          = YahooGetListedMessages.GetAllInArray(msg, "header/bcc//email", "; ");
                    mail.Body         = YahooGetListedMessages.GetAllInArray(msg, "part//text", "");
                    mail.SourceFolder = msg.XPathSelectElement("sourceFolderInfo/name").Value;
                }
            }

            return(mail);
        }
        public object applyOn(SpotterJson spotter)
        {
            var root = spotter.GetRoot();
            var list = new List <MailMsg>();

            if (root.XPathSelectElement("/result//messageInfo") != null)
            {
                foreach (var conversation in root.XPathSelectElements("/result//messageInfo"))
                {
                    foreach (var msg in conversation.XPathSelectElements("item"))
                    {
                        var mail = new MailMsg();
                        mail.From         = msg.XPathSelectElement("from/email").Value;
                        mail.To           = msg.XPathSelectElement("toEmail").Value;
                        mail.Subject      = msg.XPathSelectElement("subject").Value;
                        mail.Body         = msg.XPathSelectElement("snippet").Value;
                        mail.SourceFolder = msg.XPathSelectElement("sourceFolderInfo/name").Value;
                        list.Add(mail);
                    }
                }
            }
            return(list);
        }
Exemplo n.º 15
0
        private WebmailEventBase CreateEvent(WebmailAnalyzerBase.EventSuggest evt,
                                             WebmailAnalyzerBase.WebmailSuggest webmailApp,
                                             SpotterBase spotter)
        {
            string from;
            string to;
            string cc;
            string bcc;
            string subject;
            string body;

            switch (evt)
            {
            case WebmailAnalyzerBase.EventSuggest.MailDisplayMessage:
                if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam)
                {
                    var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetDisplayMessage"));
                    var m = o as MailMsg;
                    if (m != null)
                    {
                        return(new EventDisplayMessage(this.SnooperExport, m));
                    }
                }
                else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.YahooMailNeo)
                {
                    var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Yahoo/GetDisplayMessage"));
                    var m = o as MailMsg;
                    if (m != null)
                    {
                        return(new EventDisplayMessage(this.SnooperExport, m));
                    }
                }

                this.SpotterGetMailFields(spotter, out from, out to, out cc, out bcc, out subject, out body);
                return(new EventDisplayMessage(this.SnooperExport, from, to, cc, bcc, subject, body));

            case WebmailAnalyzerBase.EventSuggest.MailListFolder:
                if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.YahooMailNeo)
                {
                    var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Yahoo/GetListedMessages"));
                    var l = o as List <MailMsg>;
                    if (l != null)
                    {
                        return(new EventListFolder(this.SnooperExport, l));
                    }
                }
                else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam)
                {
                    var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetListedMessages"));
                    var l = o as List <MailMsg>;
                    if (l != null)
                    {
                        return(new EventListFolder(this.SnooperExport, l));
                    }
                }
                else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.MicrosoftLive)
                {
                    // TODO
                    var content  = spotter.GetStringContent();
                    var splitted = content.Split(',');
                    var list     = new List <MailMsg>();
                    for (int i = 0; i < splitted.Length; i++)
                    {
                        if (!splitted[i].Contains("new HM.Rollup"))
                        {
                            continue;
                        }
                        var mail = new MailMsg();
                        mail.From    = splitted[i + 11];
                        mail.Subject = splitted[i + 27];
                        list.Add(mail);
                    }
                    return(new EventListFolder(this.SnooperExport, list));
                }
                return(new EventListFolder(this.SnooperExport, spotter.GetStringContent()));

            default:

                if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam)
                {
                    var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetNewMessage"));
                    var m = o as MailMsg;
                    if (m != null)
                    {
                        return(new EventNewMessage(this.SnooperExport, m));
                    }
                }
                else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.MicrosoftLive)
                {
                    var pars   = spotter.GetContentPart("^d$", "*");
                    var value  = pars.Substring(1, pars.Length - 2);
                    var parray = value.Split(',');
                    to      = parray.Length > 0 ? parray[0] : "";
                    from    = parray.Length > 1 ? parray[1] : "";
                    cc      = parray.Length > 2 ? parray[2] : "";
                    bcc     = parray.Length > 3 ? parray[3] : "";
                    subject = parray.Length > 5 ? parray[5] : "";
                    body    = parray.Length > 6 ? parray[6] : "";
                    return(new EventNewMessage(this.SnooperExport, from, to, cc, bcc, subject, body));
                }


                this.SpotterGetMailFields(spotter, out from, out to, out cc, out bcc, out subject, out body);

                return(new EventNewMessage(this.SnooperExport, from, to, cc, bcc, subject, body));
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// 邮件发送 杨大鑫
        /// </summary>
        /// <param name="email">邮件对象</param>
        /// <returns></returns>
        public static bool sendEmail(MailMsg email)
        {
            String host = SysConstant.MAIL_SMTP_HOST_LM;                               //指定 smtp 服务器地址
            int    port = SysConstant.MAIL_SMTP_PORT_LM;                               //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去

            Int32 modelIndex = (Int32)myUtils.getCache(SysConstant.CACHE_MODEL_INDEX); //模式,0=朗玛信息,1=39健康网

            if (modelIndex == 1)
            {
                host = SysConstant.MAIL_SMTP_HOST_39;
                port = SysConstant.MAIL_SMTP_PORT_39;
            }

            String senderID  = email.senderID;                //邮件发送人 邮箱账号
            String senderPwd = email.senderPwd;               //邮件发送人 邮箱密码

            SmtpClient smtp = new SmtpClient();               //实例化一个SmtpClient

            smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Network
            smtp.EnableSsl      = false;                      //smtp服务器是否启用SSL加密

            smtp.Host    = host;                              //指定 smtp 服务器地址
            smtp.Port    = port;                              //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去
            smtp.Timeout = 30000;

            //如果需要认证,则用下面的方式
            smtp.Credentials = new NetworkCredential(senderID, senderPwd);

            MailMessage mm = new MailMessage(); //实例化一个邮件类

            mm.Priority = MailPriority.High;    //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可

            //收件方看到的邮件来源;
            //第一个参数是发信人邮件地址
            //第二参数是发信人显示的名称
            //第三个参数是 第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码
            mm.From = new MailAddress(senderID, email.senderName, Encoding.GetEncoding(936));

            mm.To.Add(email.recipientEmail);                //邮件的接收者,支持群发,多个地址之间用 半角逗号 分开

            mm.Subject         = email.emailTitle;          //邮件标题
            mm.SubjectEncoding = Encoding.GetEncoding(936); // 这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。 936是简体中文的pagecode,如果是英文标题,这句可以忽略不用
            mm.IsBodyHtml      = true;                      //邮件正文是否是HTML格式

            mm.BodyEncoding = Encoding.GetEncoding(936);    //邮件正文的编码, 设置不正确, 接收者会收到乱码

            mm.Body = email.emailContent;                   //邮件正文

            //添加附件
            string            mailCallPrefix = SysConstant.MAIL_CALL_PREFIX;
            Attachment        att            = null;
            List <Attachment> attList        = new List <Attachment>();

            foreach (string filePath in email.attachments)
            {
                if (File.Exists(filePath))
                {
                    att      = new Attachment(filePath);
                    att.Name = mailCallPrefix + " " + email.recipientName + SysConstant.FILE_EXCEL_SUFFIX;
                    mm.Attachments.Add(att);
                    attList.Add(att);
                    att.ContentStream.Flush();
                }
            }

            bool flag = true;

            try
            {
                smtp.Send(mm); //发送邮件,如果不返回异常, 则大功告成了。
            }
            catch (Exception e)
            {
                //throw new Exception(e.Message);
                flag = false;
            }

            //释放流
            foreach (Attachment atts in attList)
            {
                if (atts.ContentStream != null)
                {
                    atts.ContentStream.Dispose();
                }
            }

            //垃圾回收
            GC.Collect();
            return(flag);
        }
Exemplo n.º 17
0
        private MailMsg CreateMessage(Message message)
        {
            //Формирование письма
            {
                string subject      = String.Empty;
                string templateName = String.Empty;
                string template     = String.Empty;
                string body         = String.Empty;
                var    rootUrl      = _settingsService.GetSettings <string>(nameof(Setting.RootUrl))
                                      .Replace("http://", "").Replace("https://", "");
                MailMsg res;
                if (message.OrderFormId.HasValue)
                {
                    var form = _orderFormService.GetOrderForm(message.OrderFormId.Value);
                    subject = String.IsNullOrEmpty(form.EmailSubject) ? $"Заявка с сайта {rootUrl}" : form.EmailSubject;
                    if (form.DateInEmailSubject)
                    {
                        subject = $"{subject}: {DateTime.UtcNow.ApplySiteTimezone()}";
                    }
                    body = String.IsNullOrWhiteSpace(form.EmailTemplate)
                        ? message.Text
                        : string.Format(form.EmailTemplate, message.Text);
                    res = new MailMsg
                    {
                        Subject     = subject,
                        Receiver    = String.IsNullOrEmpty(form.Email) ? _settingsService.GetSettings <string>("OrderEmailAddress") : form.Email,
                        AttachIds   = message.AttachIds,
                        Body        = body.Replace("\r\n", "<br/><br/>").Replace("\n", "<br/><br/>"),
                        BccReceiver = form.BccEmail
                    };
                }
                else
                {
                    switch (message.MessageType)
                    {
                    case MessageType.CallMeBack:
                        subject      = "Обратный звонок";
                        templateName = "MailTmplCallback";
                        template     = _settingsService.GetSettings <string>(templateName);
                        body         = string.Format(template, message.Name, message.Phone, message.Text);
                        break;

                    case MessageType.Order:
                        subject      = $"Заявка с сайта {rootUrl}";
                        templateName = "MailTmplOrder";
                        template     = _settingsService.GetSettings <string>(templateName);
                        body         = string.Format(template, message.Name, message.Email, message.Phone, message.Contact,
                                                     message.Text);
                        break;
                    }

                    res = new MailMsg
                    {
                        Subject   = subject + ": " + DateTime.UtcNow.ApplySiteTimezone(),
                        Receiver  = _settingsService.GetSettings <string>("OrderEmailAddress"),
                        AttachIds = message.AttachIds,
                        Body      = body
                    };
                }
                return(res);
            }
        }
        public object applyOn(SpotterFRPC spotter)
        {
            var list = new List <MailMsg>();

            foreach (var item in spotter.Items)
            {
                var methodResponse = item as FRPCparser.FRPCMethodRespone;
                if (methodResponse == null)
                {
                    continue;
                }

                foreach (var data in methodResponse.Data)
                {
                    var msgStruct = data as FRPCparser.FRPCStruct;
                    if (msgStruct == null)
                    {
                        continue;
                    }

                    foreach (var msgItem in msgStruct.Items)
                    {
                        if (!msgItem.Key.Equals("messages"))
                        {
                            continue;
                        }
                        var msgArray = msgItem.Value as FRPCparser.FRPCArray;
                        if (msgArray == null)
                        {
                            continue;
                        }

                        foreach (var msg in msgArray.Items)
                        {
                            var mailMsg = new MailMsg();
                            var email   = msg as FRPCparser.FRPCStruct;
                            if (email == null)
                            {
                                continue;
                            }
                            foreach (var it in email.Items)
                            {
                                if (it.Key.Equals("subject"))
                                {
                                    var itSubj = it.Value as FRPCparser.FRPCString;
                                    mailMsg.Subject = itSubj?.Value;
                                }
                                else if (it.Key.Equals("abstract"))
                                {
                                    var itBody = it.Value as FRPCparser.FRPCString;
                                    mailMsg.Body = itBody?.Value;
                                }
                                else if (it.Key.Equals("to"))
                                {
                                    var recips = it.Value as FRPCparser.FRPCArray;
                                    if (recips != null)
                                    {
                                        mailMsg.To = SeznamGetNewMessage.GetAddresses(recips);
                                    }
                                }
                                else if (it.Key.Equals("from"))
                                {
                                    var senders = it.Value as FRPCparser.FRPCArray;
                                    if (senders != null)
                                    {
                                        mailMsg.From = SeznamGetNewMessage.GetAddresses(senders);
                                    }
                                }
                                else if (it.Key.Equals("folder"))
                                {
                                    var folder = it.Value as FRPCparser.FRPCInteger8;
                                    if (folder != null)
                                    {
                                        mailMsg.SourceFolder = folder.Value.ToString();
                                    }
                                }
                            }

                            list.Add(mailMsg);
                        }
                    }
                }
            }

            return(list);
        }
Exemplo n.º 19
0
        //static void s_ConfigurationChangeWatcher_Changed(object sender, FileSystemEventArgs e)
        //{
        //    Configure(e.FullPath);
        //}

        void IMailTransportSubmission.OnMessageSubmission(
             MailMsg mailmsg,
             IMailTransportNotify notify,
             IntPtr context)
        {
            LogDebug("Invoking mail sink message submission callback.");

            try
            {
                Message message = new Message(mailmsg);
                LogDebug(string.Format("Processing message \"{0}\" ({1} byte(s)).", message.Rfc822MsgSubject, message.GetContentSize()));
                byte[] content = message.ReadContent(0, message.GetContentSize());
                string filename = s_QueuePath + "\\" + message.Rfc822MsgId;
                filename = filename.Replace("<", "_").Replace(">", "_").Replace(" ", "_");
                LogDebug(string.Format("Dumping message \"{0}\" to {1}.", message.Rfc822MsgSubject, filename));
                File.WriteAllBytes(filename, content);
            }
            catch (Exception ex)
            {
                LogError(ex.Message + "\n" + ex.StackTrace.ToString());
            }
            finally
            {
                if (null != mailmsg)
                {
                    Marshal.ReleaseComObject(mailmsg);
                }
            }
        }
Exemplo n.º 20
0
 public void Send(MailMsg msg)
 {
     // запрещаем отправку сообщений
 }
Exemplo n.º 21
0
        private static void MailThreadScheduler(object obj)
        {
            MailMsg mailMsg = null;

            while (true)
            {
                int num = WaitHandle.WaitAny(LogAPI._waitEmailHandles, 100);
                if (num == 258)
                {
                    lock (LogAPI._lockEmail)
                    {
                        TimeSpan timeSpan = DateTime.Now - LogAPI._lastEmailMerge;
                        if (timeSpan.TotalSeconds < 0.0)
                        {
                            LogAPI._lastEmailMerge = DateTime.Now;
                            timeSpan = DateTime.Now - LogAPI._lastEmailMerge;
                        }
                        if (timeSpan.TotalSeconds <= 5.0)
                        {
                            continue;
                        }
                        if (LogAPI._mergedMail == null)
                        {
                            continue;
                        }
                        mailMsg            = LogAPI._mergedMail;
                        LogAPI._mergedMail = null;
                    }
                }
                if (num == 0)
                {
                    break;
                }
                try
                {
                    if (LogAPI._mailerCounter < 10)
                    {
                        lock (LogAPI._lockEmail)
                        {
                            if (mailMsg == null)
                            {
                                if (LogAPI._emailQueue.Count > 0)
                                {
                                    if (LogAPI._emailQueue.TryDequeue(out mailMsg))
                                    {
                                    }
                                }
                                else
                                {
                                    LogAPI._emailEvent.Reset();
                                }
                            }
                        }
                        if (mailMsg != null)
                        {
                            Interlocked.Increment(ref LogAPI._mailerCounter);
                            mailMsg.Body = new StringBuilder("Dear User, ").AppendLine("<br /><br />").Append(mailMsg._mergedBody).ToString();
                            ThreadCreator.StartThread(new ParameterizedThreadStart(LogAPI.sendMailThread), mailMsg, true);
                            mailMsg = null;
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }
Exemplo n.º 22
0
        private static int emailNewLog(string logKey, params string[] logPrar)
        {
            SMTPSetting sMTPSetting = new SMTPSetting();

            string[] array = sMTPSetting.Receiver.Split(new string[]
            {
                "\r\n",
                ";",
                ",",
                " "
            }, StringSplitOptions.RemoveEmptyEntries);
            List <string> list = new List <string>();

            string[] array2 = array;
            for (int i = 0; i < array2.Length; i++)
            {
                string item = array2[i];
                list.Add(item);
            }
            if (sMTPSetting.Status <= 0 || list.Count <= 0)
            {
                return(0);
            }
            string  str     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string  msg     = EventLogLang.getMsg("L" + logKey, logPrar);
            string  msg2    = EventLogLang.getMsg("SL" + logKey, logPrar);
            string  value   = str + "<br/>" + msg;
            MailMsg mailMsg = new MailMsg(sMTPSetting.ServerIP, sMTPSetting.Port, sMTPSetting.Sender, list, sMTPSetting.AuthenticationFlag, sMTPSetting.AccountName, sMTPSetting.AccountPwd);

            mailMsg.Subject  = "eco Sensors Event Notification - " + msg2;
            mailMsg.Body     = new StringBuilder().AppendLine(value).ToString();
            mailMsg.Receiver = sMTPSetting.Receiver;
            if (logKey.Equals("0230002") || logKey.Equals("0110100") || logKey.Equals("0110090") || logKey.Equals("0130001"))
            {
                LogAPI.sendMailThread(mailMsg);
                return(ErrorCode.SUCCESS);
            }
            lock (LogAPI._lockEmail)
            {
                if (LogAPI._mergedMail != null)
                {
                    if (mailMsg.Subject.Equals(LogAPI._mergedMail.Subject, StringComparison.InvariantCultureIgnoreCase) && mailMsg.Receiver.Equals(LogAPI._mergedMail.Receiver, StringComparison.InvariantCultureIgnoreCase))
                    {
                        LogAPI._mergedMail._ItemsInBody++;
                        LogAPI._mergedMail._mergedBody.Append("<br /><br />");
                        LogAPI._mergedMail._mergedBody.Append(mailMsg.Body);
                        LogAPI._lastEmailMerge = DateTime.Now;
                    }
                    else
                    {
                        LogAPI._emailQueue.Enqueue(LogAPI._mergedMail);
                        LogAPI._emailEvent.Set();
                        LogAPI._mergedMail = null;
                    }
                }
                if (LogAPI._mergedMail == null)
                {
                    LogAPI._mergedMail           = mailMsg;
                    LogAPI._mergedMail._SerialNo = LogAPI._NextEmailSerialNo++;
                    LogAPI._mergedMail._ItemsInBody++;
                    LogAPI._mergedMail._mergedBody.Append(mailMsg.Body);
                    LogAPI._lastEmailMerge = DateTime.Now;
                }
            }
            if (LogAPI._threadEmail == null)
            {
                LogAPI._waitEmailHandles[0]        = LogAPI._stopMailEvent;
                LogAPI._waitEmailHandles[1]        = LogAPI._emailEvent;
                LogAPI._threadEmail                = new Thread(new ParameterizedThreadStart(LogAPI.MailThreadScheduler));
                LogAPI._threadEmail.Name           = "Email Scheduler Thread";
                LogAPI._threadEmail.CurrentCulture = CultureInfo.InvariantCulture;
                LogAPI._threadEmail.IsBackground   = true;
                LogAPI._threadEmail.Start();
            }
            return(ErrorCode.SUCCESS);
        }
Exemplo n.º 23
0
        /// <summary>
        /// 开始发送邮件
        /// </summary>
        private void EmailSender(Object o)
        {
            //把发送邮件线程状态 保存在缓存中,方便在用户退出系统前给出提示
            myUtils.addOrUpdateCache(SysConstant.CACHE_EMAIL_SEBD_STATE, true);

            //获取配置信息
            if (myUtils.existsCache(SysConstant.CACHE_CONFIG))
            {
                this.config = (Config)myUtils.getCache(SysConstant.CACHE_CONFIG);
            }
            else
            {
                this.config = myUtils.XMLReaderByConfig(this.configFilePath);
            }


            //要发送的邮件
            List <Email> emailList = (List <Email>)myUtils.getCache(SysConstant.CACHE_EMAILS);


            foreach (Email mail in emailList)
            {
                MailMsg sm = new MailMsg();
                sm.senderID   = this.config.SenderEmail;
                sm.senderPwd  = this.config.EmailPwd;
                sm.senderName = this.config.SenderEmail;

                if (string.IsNullOrWhiteSpace(this.emailTitle))
                {
                    sm.emailTitle = mail.emailTitle;
                }
                else
                {
                    sm.emailTitle = this.emailTitle;
                }

                mail.emailTitle = sm.emailTitle;

                //添加附件
                sm.attachments = new List <string>();

                //读取附件
                string fileFolder = sendFilePath + mail.recipientEmail + "/";

                DirectoryInfo folder = new DirectoryInfo(fileFolder);
                foreach (FileInfo NextFile in folder.GetFiles())
                {
                    string fileFullName = NextFile.FullName;
                    //只获取excel文件
                    string fileName    = fileFullName.Substring(fileFullName.LastIndexOf("\\") + 1);
                    string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);

                    string filter = "xls,xlsx";
                    if (filter.Contains(fileNameExt))
                    {
                        sm.attachments.Add(fileFullName);
                    }
                }

                string mailCallPrefix = SysConstant.MAIL_CALL_PREFIX;
                sm.emailContent   = "<span>" + mailCallPrefix + " " + mail.recipientName + ":<br/>&nbsp;&nbsp;</span>" + this.emailContent;
                sm.recipientEmail = mail.recipientEmail;
                sm.recipientName  = mail.recipientName;

                mail.emailContent = this.emailContent;

                bool b = myUtils.sendEmail(sm);
                if (b)
                {
                    mail.state = "已发送";
                    mail.date  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");;
                    this.successEmails.Add(mail);
                }
                else
                {
                    mail.state = "发送失败";
                    mail.date  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");;
                    this.failedEmails.Add(mail);
                }
                //把传来的参数转换为委托
                CallBackDelegate cbd = o as CallBackDelegate;
                //执行回调.
                cbd(emailList.Count, this.successEmails.Count, this.failedEmails.Count);
            }
        }