コード例 #1
0
            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;
            }
コード例 #2
0
        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);
        }
コード例 #3
0
            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);
            }
コード例 #4
0
        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);
        }
コード例 #5
0
 public void CleanWLMailApiReferences()
 {
     _wlmailApiCore = null;
     _folderManager = null;
     _accountManager = null;
 }
コード例 #6
0
 public Utils(WLMailApi wlmailApiCore, FolderManager folderManager, MailAccountManager accountManager)
 {
     _wlmailApiCore = wlmailApiCore;
     _folderManager = folderManager;
     _accountManager = accountManager;
 }