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); }
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 } }