private void ReadAccount(int?accountID) { int? smtpAccount = accountID; EMailAccount account = null; if (smtpAccount != null) { account = ReadAccountSettings(smtpAccount); } if (account == null) { account = ReadDefaultAccountSettings(); } if (account == null) { throw new PXException(ErrorMessages.EmailNotConfigured); } if (string.IsNullOrEmpty(account.Address.With(_ => _.Trim()))) { throw new PXException(Messages.EmptyEmailAccountAddress); } var mailer = MailAccountManager.GetSender(account); if (mailer == null) { throw new PXException(ErrorMessages.EmailNotConfigured); } _account = account; _mailer = mailer; }
public virtual IEnumerable previewMail(PXAdapter a) { if (Preview.AskExt( (graph, name) => { Preview.Current.MailAccountID = MassMails.Current.With(current => current.MailAccountID) ?? MailAccountManager.DefaultMailAccountID; Preview.Current.MailTo = MailAccountManager.GetDefaultEmailAccount(false).With(_ => _.Address); }) == WebDialogResult.OK) { Preview.View.Answer = WebDialogResult.OK; CheckFields(Preview.Cache, Preview.Current, typeof(CRMassMailPreview.mailAccountID), typeof(CRMassMailPreview.mailTo)); Preview.View.Answer = WebDialogResult.None; var mails = GetMailsForSending(true); if (mails.Count == 0) { throw new PXException(Messages.RecipientsNotFound); } var mailTo = Preview.Current.MailTo; var accountId = Preview.Current.MailAccountID; SendMassMail(accountId, mailTo, null, null, mails, false); Save.Press(); } yield return(MassMails.Current); }
private void PostProcessMessage(SMEmail message) { PXDatabase.Update <CRActivity>( new PXDataFieldAssign <CRActivity.startDate>(PXTimeZoneInfo.UtcNow), new PXDataFieldAssign <CRActivity.uistatus>(message.Exception == null ? ActivityStatusAttribute.Completed : ActivityStatusAttribute.Open), new PXDataFieldRestrict <CRActivity.noteID>(PXDbType.UniqueIdentifier, 16, message.RefNoteID, PXComp.EQ)); if (message.Exception == null) { PXUpdate <Set <PMTimeActivity.approvalStatus, Switch <Case <Where <PMTimeActivity.approverID, IsNull>, ActivityStatusAttribute.completed>, ActivityStatusAttribute.pendingApproval> >, PMTimeActivity, Where <PMTimeActivity.refNoteID, Equal <Required <PMTimeActivity.refNoteID> >, And <PMTimeActivity.isCorrected, Equal <Zero> > > > .Update(_graph, message.RefNoteID); } if (message.Exception == null) { message.RetryCount = 0; message.MPStatus = MailStatusListAttribute.Processed; } else { message.RetryCount += 1; if (message.Exception.StartsWith("5") || message.RetryCount >= MailAccountManager.GetEmailPreferences().RepeatOnErrorSending) { message.RetryCount = 0; message.MPStatus = MailStatusListAttribute.Failed; } else { message.MPStatus = MailStatusListAttribute.PreProcess; } } UpdateMessage(message); }
public virtual IEnumerable previewMail(PXAdapter a) { if (Preview.AskExt((graph, name) => { Preview.Current.MailAccountID = MassMails.Current.MailAccountID ?? MailAccountManager.DefaultMailAccountID; Preview.Current.MailTo = MailAccountManager.GetDefaultEmailAccount(false)?.Address; }) == WebDialogResult.OK) { Preview.View.Answer = WebDialogResult.OK; CheckFields(Preview.Cache, Preview.Current, typeof(CRMassMailPreview.mailAccountID), typeof(CRMassMailPreview.mailTo)); Preview.View.Answer = WebDialogResult.None; // todo: probably should be IQueryable to optimize FirstOrDefault request var recipient = EnumerateRecipientsForSending().FirstOrDefault(); if (recipient == null) { throw new PXException(Messages.RecipientsNotFound); } var massMail = PXCache <CRMassMail> .CreateCopy(MassMails.Current); massMail.MailAccountID = Preview.Current.MailAccountID; massMail.MailTo = Preview.Current.MailTo; massMail.MailCc = null; massMail.MailBcc = null; AddSendedMessages( massMail, new Recipient(recipient.Contact, recipient.Format).GetSender(massMail).Send() ); Actions.PressSave(); } yield return(MassMails.Current); }
public void CleanWLMailApiReferences() { _wlmailApiCore = null; _folderManager = null; _accountManager = null; }
public Utils(WLMailApi wlmailApiCore, FolderManager folderManager, MailAccountManager accountManager) { _wlmailApiCore = wlmailApiCore; _folderManager = folderManager; _accountManager = accountManager; }