private static IEnumerable <CRSMEmail> Send(int?accountId, Message message, string format, IEnumerable <NotificationRecipient> additionalRecipients, Int32?TemplateID) { var graph = new PXGraph(); var activitySource = message.Relationship.ActivitySource; Guid?refNoteID = GetEntityNoteID(graph, activitySource); var bacc = message.Relationship.ParentSource as BAccount; int?bAccountID = bacc != null ? bacc.BAccountID : null; NotificationGenerator sender = null; if (TemplateID != null) { sender = TemplateNotificationGenerator.Create(activitySource, (int)TemplateID); } else if (!string.IsNullOrEmpty(message.TemplateID)) { sender = TemplateNotificationGenerator.Create(activitySource, message.TemplateID); } if (sender == null) { sender = new NotificationGenerator(graph); } sender.Body = string.IsNullOrEmpty(sender.Body) ? message.Content.Body : sender.Body; sender.Subject = string.IsNullOrEmpty(sender.Subject) ? message.Content.Subject : sender.Subject; sender.MailAccountId = accountId; sender.Reply = accountId. With(_ => (EMailAccount)PXSelect <EMailAccount, Where <EMailAccount.emailAccountID, Equal <Required <EMailAccount.emailAccountID> > > > . Select(graph, _.Value)). With(_ => _.Address); sender.To = message.Addressee.To; sender.Cc = message.Addressee.Cc; sender.Bcc = message.Addressee.Bcc; sender.RefNoteID = refNoteID; sender.BAccountID = bAccountID; sender.BodyFormat = PXNotificationFormatAttribute.ValidBodyFormat(format); List <NotificationRecipient> watchers = new List <NotificationRecipient>(); if (sender.Watchers != null) { watchers.AddRange(sender.Watchers); } if (additionalRecipients != null) { watchers.AddRange(additionalRecipients); } sender.Watchers = watchers; foreach (ReportStream attachment in message.Attachments) { sender.AddAttachment(attachment.Name, attachment.GetBytes()); } return(sender.Send()); }
private IDictionary<string, byte[]> GenerateFile(ReportNode report, string name, string format) { var source = new GroupMessage(null, null, PX.Common.Mail.MailSender.MessageAddressee.Empty, PX.Common.Mail.MailSender.MessageContent.Empty, null, format, MessageRelationship.Empty, ReportAttachment.Empty); var message = new PX.Reports.Mail.Message(source, report, null); var attachments = message.Attachments; if (attachments == null) return null; var result = new Dictionary<string, byte[]>(attachments.Count); var index = 0; foreach (var item in attachments) { var filename = item.Name; if (!string.IsNullOrEmpty(name)) { filename = name; if (index++ > 0) filename += " (" + index.ToString() + ")"; } if (!System.IO.Path.HasExtension(item.Name)) { var ext = MimeTypes.GetExtension(item.MimeType); if (ext != null) filename = System.IO.Path.GetFileNameWithoutExtension(filename) + ext; } result.Add(filename, item.ToArray()); } return result; }
private IDictionary <string, byte[]> GenerateFile(ReportNode report, string name, string format) { var source = new GroupMessage(null, null, PX.Common.Mail.MailSender.MessageAddressee.Empty, PX.Common.Mail.MailSender.MessageContent.Empty, null, format, MessageRelationship.Empty, ReportAttachment.Empty); var message = new PX.Reports.Mail.Message(source, report, null); var attachments = message.Attachments; if (attachments == null) { return(null); } var result = new Dictionary <string, byte[]>(attachments.Count); var index = 0; foreach (var item in attachments) { var filename = item.Name; if (!string.IsNullOrEmpty(name)) { filename = name; if (index++ > 0) { filename += " (" + index.ToString() + ")"; } } if (!System.IO.Path.HasExtension(item.Name)) { var ext = MimeTypes.GetExtension(item.MimeType); if (ext != null) { filename = System.IO.Path.GetFileNameWithoutExtension(filename) + ext; } } result.Add(filename, item.ToArray()); } return(result); }