using System.Net; using System; using System.Collections.Generic; using Independentsoft.Exchange; using uri_import.FClasses; using Acumatica.Default_20_200_001.Model; using Acumatica.Manufacturing_21_200_001.Model; namespace uri_import.EClasses { public class Ex365 { private NetworkCredential _credential; private Service _service; private StandardFolder _folder; public NetworkCredential Credential { get { return _credential; } set { _credential = value; } } public Service service { get { return _service; } set { _service = value; } } public StandardFolder Folder { get { return _folder; } set { _folder = value; } } public Ex365() { } public Ex365(string username, string password) { _credential = new NetworkCredential(username, password); _service = new Service(Program.Cmn.Email.Url, _credential); } public Ex365(string username, string password, string url) { _credential = new NetworkCredential(username, password); _service = new Service(url, _credential); } public Ex365(string username, string password, string url, StandardFolder folder) { _credential = new NetworkCredential(username, password); _service = new Service(url, _credential); Folder inbox = _service.GetFolder(folder); } public List GetPOs(string filter, bool hasAttachment = true) { int index = 1; List list = new List(); IsEqualTo restriction = new IsEqualTo(MessagePropertyPath.HasAttachments, hasAttachment); Contains subFilter = new Contains(MessagePropertyPath.Subject, Program.Cmn.Email.Filter, ContainmentMode.Prefixed, ContainmentComparison.IgnoreCase); ItemShape itemShape = new ItemShape(ShapeType.Id); FindItemResponse response = _service.FindItem(StandardFolder.Inbox, itemShape, subFilter); for (int i = 0; i < response.Items.Count; i++) { if (response.Items[i] is Message) { ItemId itemId = response.Items[i].ItemId; Message message = service.GetMessage(itemId); Console.WriteLine(message.Subject); IList attachmentsInfo = message.Attachments; for (int j = 0; j < attachmentsInfo.Count; j++) { Attachment attachment = _service.GetAttachment(attachmentsInfo[j].Id); if (attachment is FileAttachment && attachment.Name.ToUpper().EndsWith(".PDF")) { EmailAttachment ea = new EmailAttachment(); FileAttachment fileAttachment = (FileAttachment)attachment; ea.Content = fileAttachment.Content; ea.FileName = fileAttachment.Name.ToUpper().Replace(".PDF", string.Format("{0}.PDF", index)); index = index + 1; ea.Sender = message.From.EmailAddress; list.Add(ea); } } } } return list; } } public class EmailSettings { public string Username { get; set; } public string Password { get; set; } public string Url { get; set; } public StandardFolder Folder { get; set; } } public class EmailAttachment { private List _productionOrders; private List _errors; private bool _released = false; private bool _linked = false; public EmailAttachment() { _productionOrders = new List(); _errors = new List(); } public byte[] Content { get; set; } public string Sender { get; set; } public string FileName { get; set; } public string FilePath { get { string path = System.IO.Path.Combine( FileActions.ExecFile, "attachments", this.FileName); return path; } } public SalesOrder SalesOrder { get; set; } public string SalesOrderNumber { get; set; } public List ProductionOrders { get { return _productionOrders; } set { _productionOrders = value; } } public bool Released { get { return _released; } set { _released = value; } } public bool Linked { get { return _linked; } set { _linked = value; } } public List Errors { get { return _errors; } set { _errors = value; } } } }