public static Mime BuildMessageWithAttachments(string to, string from, string fileName, byte[] file) { var fromAddresses = new AddressList(); fromAddresses.Parse(@from); var responseMime = new Mime(); responseMime.MainEntity.From = fromAddresses; var toList = new AddressList { new MailboxAddress(to) }; responseMime.MainEntity.To = toList; responseMime.MainEntity.Subject = "[Debug message]"; responseMime.MainEntity.ContentType = MediaType_enum.Multipart_mixed; var testEntity = responseMime.MainEntity.ChildEntities.Add(); testEntity.ContentType = MediaType_enum.Text_plain; testEntity.ContentTransferEncoding = ContentTransferEncoding_enum.QuotedPrintable; testEntity.DataText = ""; var attachEntity = responseMime.MainEntity.ChildEntities.Add(); attachEntity.ContentType = MediaType_enum.Application_octet_stream; attachEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64; attachEntity.ContentDisposition = ContentDisposition_enum.Attachment; attachEntity.ContentDisposition_FileName = Path.GetFileName(fileName); attachEntity.Data = file; return(responseMime); }
private void ExcludeAddresses(MailAddressList recipients, string addrStr) { if (string.IsNullOrEmpty(addrStr)) { return; } var addresses = AddressList.Parse(addrStr); foreach (PX.Common.Mail.Address address in addresses) { var group = address as Group; if (group != null) { foreach (Mailbox mailbox in group.Members) { recipients.Remove(mailbox); } } else { recipients.Remove((Mailbox)address); } } }
public static EmailAddressType[] ParceAddresses(string address) { if (String.IsNullOrEmpty(address)) { return(null); } List <EmailAddressType> addresses = new List <EmailAddressType>(); foreach (PX.Common.Mail.Address item in AddressList.Parse(address)) { Group group = item as Group; if (group != null) { foreach (Mailbox mailbox in group.Members) { addresses.Add(new EmailAddressType() { EmailAddress = mailbox.Address, Name = mailbox.DisplayName }); } } else { addresses.Add(new EmailAddressType() { EmailAddress = ((Mailbox)item).Address, Name = ((Mailbox)item).DisplayName }); } } return(addresses.ToArray()); }
protected override bool Process(Package package) { var account = package.Account; if (account.IncomingProcessing != true || account.CreateActivity != true) { return(false); } PXGraph graph = package.Graph; var message = package.Message; if (!string.IsNullOrEmpty(message.Exception) || message.RefNoteID != null) { return(false); } List <String> addressesList = new List <String>( ); addressesList.Add(package.Address); if (package.Message.IsIncome == false && package.Message.MailTo != null && package.Account.EmailAccountType == EmailAccountTypesAttribute.Exchange) { addressesList.InsertRange(0, AddressList.Parse(package.Message.MailTo).Mailboxes.Select(m => m.Address)); } foreach (String address in addressesList) { PXSelect <Contact, Where <Contact.eMail, Equal <Required <Contact.eMail> > > > . Clear(package.Graph); var contact = (Contact)PXSelect <Contact, Where <Contact.eMail, Equal <Required <Contact.eMail> > > > . SelectWindowed(package.Graph, 0, 1, address); if (contact != null && contact.ContactID != null) { graph.EnsureCachePersistence(typeof(Contact)); graph.EnsureCachePersistence(typeof(BAccount)); message.ContactID = contact.ContactID; PXSelect <BAccount, Where <BAccount.bAccountID, Equal <Required <BAccount.bAccountID> > > > . Clear(package.Graph); BAccount baCcount = PXSelect <BAccount, Where <BAccount.bAccountID, Equal <Required <BAccount.bAccountID> > > > . Select(package.Graph, contact.BAccountID); if (baCcount != null) { message.BAccountID = baCcount.BAccountID; } return(true); } } return(false); }
private IEnumerable <Mailbox> RemoveAddress(IEnumerable <Mailbox> source, string email) { email = email.With(_ => _.Trim()); HybridDictionary addresses = new HybridDictionary(); if (!string.IsNullOrEmpty(email)) { foreach (PX.Common.Mail.Address address in AddressList.Parse(email)) { Group group = address as Group; if (group != null) { foreach (Mailbox mailbox in @group.Members.Where(mailbox => !string.IsNullOrEmpty(mailbox.Address) && !addresses.Contains(mailbox.Address.ToLower()))) { addresses.Add(mailbox.Address.ToLower(), mailbox); } } else { Mailbox mailbox = (Mailbox)address; if (!string.IsNullOrEmpty(mailbox.Address) && !addresses.Contains(mailbox.Address.ToLower())) { addresses.Add(mailbox.Address.ToLower(), mailbox); } } } } return(source.Where(item => addresses.Count == 0 || !addresses.Contains(item.Address.ToLower()))); }
public static Mime BuildMessageWithAttachments(string subject, string body, string[] to, string[] from, string[] files) { Assert.That(to, Is.Not.Null, "Список to пуст"); Assert.That(to.Length, Is.GreaterThan(0), "Список to пуст"); Assert.That(from, Is.Not.Null, "Список from пуст"); Assert.That(from.Length, Is.GreaterThan(0), "Список from пуст"); var responseMime = new Mime(); responseMime.MainEntity.Subject = subject; responseMime.MainEntity.ContentType = MediaType_enum.Multipart_mixed; if (!String.IsNullOrWhiteSpace(body)) { var textEntity = responseMime.MainEntity.ChildEntities.Add(); textEntity.ContentType = MediaType_enum.Text_plain; textEntity.ContentTransferEncoding = ContentTransferEncoding_enum.QuotedPrintable; textEntity.DataText = body; } var fromAddresses = new AddressList(); fromAddresses.Parse(from[0]); responseMime.MainEntity.From = fromAddresses; if (from.Length > 1) { responseMime.MainEntity.Sender = MailboxAddress.Parse(from[1]); } var toList = new AddressList(); toList.Parse(to.Implode()); responseMime.MainEntity.To = toList; if (files != null) { foreach (var fileName in files) { var attachEntity = responseMime.MainEntity.ChildEntities.Add(); attachEntity.ContentType = MediaType_enum.Application_octet_stream; attachEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64; attachEntity.ContentDisposition = ContentDisposition_enum.Attachment; attachEntity.ContentDisposition_FileName = Path.GetFileName(fileName); using (var fileStream = File.OpenRead(fileName)) { var fileBytes = new byte[fileStream.Length]; fileStream.Read(fileBytes, 0, (int)(fileStream.Length)); attachEntity.Data = fileBytes; } } } return(responseMime); }
public static EmailAddressType ParceAddress(string address) { if (String.IsNullOrEmpty(address)) { return(null); } foreach (PX.Common.Mail.Address item in AddressList.Parse(address)) { return(new EmailAddressType() { EmailAddress = ((Mailbox)item).Address, Name = ((Mailbox)item).DisplayName }); } return(null); }
private static IEnumerable <Mailbox> ParseAddresses(string address) { address = address.With(_ => _.Trim()); if (!string.IsNullOrEmpty(address)) { foreach (PX.Common.Mail.Address item in AddressList.Parse(address)) { var group = item as Group; if (group != null) { foreach (Mailbox mailbox in group.Members) { yield return(mailbox); } } else { yield return((Mailbox)item); } } } }
protected static string MergeAddressList(CRSMEmail email, string addressList, string sourceList) { if (string.IsNullOrEmpty(addressList)) { return(sourceList); } AddressList result = new AddressList(); var index = new HashSet <string>(); foreach (Mailbox box in AddressList.Parse(addressList)) { if (index.Contains(box.Address)) { continue; } if (email.MailTo != null && email.MailTo.Contains(box.Address)) { continue; } if (email.MailCc != null && email.MailCc.Contains(box.Address)) { continue; } if (email.MailBcc != null && email.MailBcc.Contains(box.Address)) { continue; } index.Add(box.Address); result.Add(box); } return(result.Count == 0 ? sourceList : (string.IsNullOrEmpty(sourceList) ? result.ToString() : sourceList + "; " + result)); }
private IEnumerable <Mailbox> RemoveAddress(IEnumerable <Mailbox> source, string email) { email = email.With(_ => _.Trim()); var addresses = new HybridDictionary(); if (!string.IsNullOrEmpty(email)) { foreach (PX.Common.Mail.Address address in AddressList.Parse(email)) { var group = address as Group; if (group != null) { foreach (Mailbox mailbox in group.Members) { if (!string.IsNullOrEmpty(mailbox.Address)) { addresses.Add(mailbox.Address.ToLower(), mailbox); } } } else { var mailbox = (Mailbox)address; if (!string.IsNullOrEmpty(mailbox.Address)) { addresses.Add(mailbox.Address.ToLower(), mailbox); } } } } foreach (Mailbox item in source) { if (addresses.Count == 0 || !addresses.Contains(item.Address.ToLower())) { yield return(item); } } }