public ActionResult ProcessJob(Job job)
        {
            try
            {
                _logger.Info("Launched client e-mail action");

                var message = new Email();

                message.Subject = job.TokenReplacer.ReplaceTokens(job.Profile.EmailClientSettings.Subject);
                message.Body    = job.TokenReplacer.ReplaceTokens(job.Profile.EmailClientSettings.Content);

                if (job.Profile.EmailClientSettings.AddSignature)
                {
                    message.Body += job.JobTranslations.EmailSignature;
                }

                var recipients = job.TokenReplacer.ReplaceTokens(job.Profile.EmailClientSettings.Recipients);
                foreach (var recipient in recipients.Replace(',', ';').Split(';'))
                {
                    if (!string.IsNullOrWhiteSpace(recipient))
                    {
                        message.To.Add(recipient.Trim());
                    }
                }

                if (!SkipFileAttachments(job))
                {
                    foreach (var file in job.OutputFiles)
                    {
                        message.Attachments.Add(new Attachment(file));
                    }
                }

                _logger.Info("Starting e-mail client");

                var mailClient = _emailClientFactory.CreateEmailClient();

                if (mailClient == null)
                {
                    _logger.Error("No compatible e-mail client installed");
                    return(new ActionResult(ErrorCode.MailClient_NoCompatibleEmailClientInstalled));
                }

                var success = mailClient.ShowEmailClient(message);

                if (!success)
                {
                    _logger.Warn("Could not start e-mail client");
                    return(new ActionResult(ErrorCode.MailClient_GenericError));
                }

                _logger.Info("Done starting e-mail client");
                return(new ActionResult());
            }
            catch (Exception ex)
            {
                _logger.Error("Exception in e-mail client Action \r\n" + ex.Message);
                return(new ActionResult(ErrorCode.MailClient_GenericError));
            }
        }
        private ActionResult Process(MailInfo mailInfo)
        {
            var email = CreateEmail(mailInfo);

            try
            {
                _logger.Info("Launched e-mail client action");

                var mailClient = _emailClientFactory.CreateEmailClient();

                if (mailClient == null)
                {
                    _logger.Error("No compatible e-mail client installed");
                    return(new ActionResult(ErrorCode.MailClient_NoCompatibleEmailClientInstalled));
                }

                var success = mailClient.ShowEmailClient(email);

                if (!success)
                {
                    _logger.Warn("Could not start e-mail client");
                    return(new ActionResult(ErrorCode.MailClient_GenericError));
                }

                _logger.Info("Done starting e-mail client");
                return(new ActionResult());
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Exception in e-mail client Action ");
                return(new ActionResult(ErrorCode.MailClient_GenericError));
            }
        }
        public ActionResult Process(string subject, string body, bool isHtml, bool hasSignature, string signature, string recipientsTo, string recipientsCc, string recipientsBcc, bool hasAttachments, IEnumerable <string> attachedFiles)
        {
            try
            {
                _logger.Info("Launched client e-mail action");

                var message = new Email();

                message.Subject = subject;
                message.Body    = body;
                message.Html    = isHtml;

                if (hasSignature)
                {
                    message.Body += isHtml ? signature.Replace(Environment.NewLine, "<br>") : signature;
                }

                message.Recipients.AddTo(recipientsTo);
                message.Recipients.AddCc(recipientsCc);
                message.Recipients.AddBcc(recipientsBcc);

                if (hasAttachments)
                {
                    foreach (var file in attachedFiles)
                    {
                        message.Attachments.Add(new Attachment(file));
                    }
                }

                _logger.Info("Starting e-mail client");

                var mailClient = _emailClientFactory.CreateEmailClient();

                if (mailClient == null)
                {
                    _logger.Error("No compatible e-mail client installed");
                    return(new ActionResult(ErrorCode.MailClient_NoCompatibleEmailClientInstalled));
                }

                var success = mailClient.ShowEmailClient(message);

                if (!success)
                {
                    _logger.Warn("Could not start e-mail client");
                    return(new ActionResult(ErrorCode.MailClient_GenericError));
                }

                _logger.Info("Done starting e-mail client");
                return(new ActionResult());
            }
            catch (Exception ex)
            {
                _logger.Error("Exception in e-mail client Action \r\n" + ex.Message);
                return(new ActionResult(ErrorCode.MailClient_GenericError));
            }
        }
Beispiel #4
0
        /// <summary>
        /// Sends e-mail message <paramref name="emailMessage"/>.
        /// </summary>
        /// <param name="emailMessage">E-mail message.</param>
        /// <param name="ignoreRights">Flag that indicates whether to ignore rights.</param>
        public virtual void Send(EmailMessage emailMessage, bool ignoreRights = false)
        {
            SynchronizationErrorHelper helper = SynchronizationErrorHelper.GetInstance(_userConnection);

            try {
                IEmailClient emailClient = _emailClientFactory
                                           .CreateEmailClient(emailMessage.From.ExtractEmailAddress(), ignoreRights);
                emailClient.Send(emailMessage, ignoreRights);
                ClearSyncError(helper, emailClient, emailMessage.From);
            } catch (Exception ex) {
                helper.ProcessSynchronizationError(emailMessage.From, ex);
                throw;
            }
        }
        public void CheckEmailClientInstalled_ClientCannotBeCreated_ReturnsFalse()
        {
            _emailClientFactory.CreateEmailClient().Returns(x => null);
            var action = BuildAction();

            Assert.IsFalse(action.CheckEmailClientInstalled());
        }
Beispiel #6
0
        public ActionResult ProcessJob(IJob job)
        {
            try
            {
                _logger.Info("Launched client e-mail action");

                var message = new Email();

                message.Subject = job.TokenReplacer.ReplaceTokens(job.Profile.EmailClient.Subject);
                message.Body    = job.TokenReplacer.ReplaceTokens(job.Profile.EmailClient.Content);

                if (job.Profile.EmailClient.AddSignature)
                {
                    message.Body += _signatureText;
                }

                foreach (string recipient in job.Profile.EmailClient.Recipients.Replace(',', ';').Split(';'))
                {
                    if (!string.IsNullOrWhiteSpace(recipient))
                    {
                        message.To.Add(recipient.Trim());
                    }
                }

                foreach (string file in job.OutputFiles)
                {
                    message.Attachments.Add(new Attachment(file));
                }

                _logger.Info("Starting e-mail client");

                var mailClient = _emailClientFactory.CreateEmailClient();

                if (mailClient == null)
                {
                    _logger.Error("No compatible e-mail client installed");
                    return(new ActionResult(ActionId, 101));
                }

                bool success = mailClient.ShowEmailClient(message);

                if (!success)
                {
                    _logger.Warn("Could not start e-mail client");
                    return(new ActionResult(ActionId, 100));
                }

                _logger.Info("Done starting e-mail client");
                return(new ActionResult());
            }
            catch (Exception ex)
            {
                _logger.Error("Exception in e-mail client Action \r\n" + ex.Message);
                return(new ActionResult(ActionId, 999));
            }
        }
        public void EmailClientAction_NoClientInstalled_ReturnsActionresultWithId101()
        {
            _emailClientFactory = Substitute.For <IEmailClientFactory>();
            _emailClientFactory.CreateEmailClient().Returns(x => null);
            var action = BuildAction();

            var result = action.ProcessJob(_job);

            Assert.AreEqual(ErrorCode.MailClient_NoCompatibleEmailClientInstalled, result[0]);
        }
Beispiel #8
0
        public bool SendTestEmail(EmailClientSettings clientSettings)
        {
            var emailClient = _emailClientFactory.CreateEmailClient();

            if (emailClient == null)
            {
                return(false);
            }

            var eMail         = new Email();
            var tokenReplacer = _tokenHelper.TokenReplacerWithPlaceHolders;

            clientSettings.Recipients = tokenReplacer.ReplaceTokens(clientSettings.Recipients);
            foreach (var recipient in clientSettings.Recipients.Replace(',', ';').Split(';'))
            {
                if (!string.IsNullOrWhiteSpace(recipient))
                {
                    eMail.To.Add(recipient.Trim());
                }
            }

            eMail.Subject = tokenReplacer.ReplaceTokens(clientSettings.Subject);
            eMail.Html    = clientSettings.Html;
            eMail.Body    = tokenReplacer.ReplaceTokens(clientSettings.Content);

            if (clientSettings.AddSignature)
            {
                var signature = _mailSignatureHelper.ComposeMailSignature();
                if (clientSettings.Html)
                {
                    signature = signature.Replace(Environment.NewLine, "<br/>");
                }
                eMail.Body += signature;
            }

            try
            {
                var tempFolder    = _path.GetTempPath();
                var tmpTestFolder = _pathSafe.Combine(tempFolder, "PDFCreator-Test\\SendSmtpTestmail");
                _directory.CreateDirectory(tmpTestFolder);
                var tmpFile = _pathSafe.Combine(tmpTestFolder, "PDFCreator Mail Client Test.pdf");
                _file.WriteAllText(tmpFile, "");
                eMail.Attachments.Add(new Attachment(tmpFile));

                emailClient.ShowEmailClient(eMail);
            }
            catch (Exception ex)
            {
                _logger.Warn(ex, "Exception while creating mail");
                return(false);
            }
            return(true);
        }
Beispiel #9
0
        public void Setup()
        {
            _pathWrap           = Substitute.For <IPath>();
            _directoryWrap      = Substitute.For <IDirectory>();
            _fileWrap           = Substitute.For <IFile>();
            _emailClient        = Substitute.For <IEmailClient>();
            _emailClientFactory = Substitute.For <IEmailClientFactory>();
            _emailClientFactory.CreateEmailClient().Returns(_emailClient);
            _mailSignatureHelper = Substitute.For <IMailSignatureHelper>();
            _clientTestEmail     = new ClientTestEmail(_emailClientFactory, _mailSignatureHelper, _pathWrap,
                                                       _directoryWrap, _fileWrap);

            _emailClientSettings = new EmailClientSettings();
        }
Beispiel #10
0
        public void SendTestMail_EmailClientFactoryReturnsNull_ReturnsFalse()
        {
            _emailClientFactory.CreateEmailClient().ReturnsNull();

            Assert.IsFalse(_clientTestEmail.SendTestEmail(_emailClientSettings));
        }