Exemple #1
0
        public override List <MessageData> GetMessageData(MessageInfo info)
        {
            var mail = telecom.GetMessage(info["Id"]);

            //if (!EAC2String(mail.To).IsMatch(info.Get("To","*")) || !EAC2String(mail.Cc).IsMatch(info.Get("CC","*"))) return null;//To вместо [email protected] содержит Бурдин Михаил Вадимович
            if (!info.Get("UseAttach", true))
            {
                return new List <MessageData>()
                       {
                           new MessageData(info["Subject"].ReplaceAny("_", "\\", "/", ":", "?", "\"", "<", ">", "|", "*", "\t"),
                                           new MemoryStream(Encoding.UTF8.GetBytes(mail.Body + ""), false))
                       }
            }
            ;
            var result = new List <MessageData>();

            foreach (var a in mail.FileAttachments)
            {
                if (a.Name.IsMatch(info.Get("AttachFilter", "*")))
                {
                    result.Add(new MessageData(a.Name, new MemoryStream(telecom.GetAttachment(a.Id), false)));
                }
            }

            return(result);
        }
Exemple #2
0
        public override void WriteMessage(MessageInfo info, List <MessageData> data)
        {
            //if (!info.From.IsEmpty()) mail.From = new EmailAddress(info.From);
            var attach = new Dictionary <string, byte[]>();

            for (int i = info.Get("UseAttach", true) ? 0 : 1; i < data.Count; i++)
            {
                attach.Add(data[i].Name, data[i].Stream.ReadToEnd());
            }

            telecom.SendMessage(info["To"], info.Get("Subject", "{0}").FormatStr(info.Name.IfEmpty(data.Count > 0 ? data[0].Name : ""), info.CreationTime),
                                info.Get("UseAttach", true) || data.Count == 0 ? "" : info.Encoding.GetString(data[0].Stream.ReadToEnd()), attach, info["CC"], "", false);
        }
        public override void WriteMessage(MessageInfo info, List <MessageData> data)
        {
            var mail = new MailMessage();

            try
            {
                mail.Subject = info.Get("Subject", "{0}").FormatStr(info.Name.IfEmpty(data.Count > 0 ? data[0].Name : ""), info.CreationTime);
                mail.From    = new MailAddress(info.Get("From", info["login"]));
                Array.ForEach(info.Get("To", info["login"]).Split(';'), to => { if (!to.IsEmpty())
                                                                                {
                                                                                    mail.To.Add(new MailAddress(to));
                                                                                }
                              });
                Array.ForEach(info["CC"].Split(';'), cc => { if (!cc.IsEmpty())
                                                             {
                                                                 mail.CC.Add(new MailAddress(cc));
                                                             }
                              });

                mail.BodyEncoding = info.Encoding;
                mail.Body         = "";
                bool useBody = !info.Get("UseAttach", true);

                foreach (var msg in data)
                {
                    if (useBody)
                    {
                        mail.Body += mail.BodyEncoding.GetString(msg.Stream.ReadToEnd());
                        useBody    = false;
                    }
                    else
                    {
                        var attachment = new Attachment(msg.Stream, msg.Name.Trim(), MediaTypeNames.Application.Octet);
                        attachment.ContentDisposition.Inline = false;
                        mail.Attachments.Add(attachment);
                    }
                }
                telecom.Send(mail);
            }
            finally
            {
                foreach (var attachment in mail.Attachments)
                {
                    attachment.Dispose();
                }
                mail.Attachments.Dispose();
                mail.Dispose();
                mail = null;
                //telecom.Dispose();//этот метод доступен только в FW4
            }
        }