예제 #1
0
        /// <summary>
        ///    Send information about contact
        /// </summary>
        /// <param name="aPerson">A person who contacts</param>
        /// <param name="resumeFiles">Resume files</param>
        /// <param name="codeExampleFiles">Code example files</param>
        /// <param name="credentials">Credentials</param>
        /// <param name="recipients">Recipient collection</param>
        /// <returns>true, if successfully sending contact information, false otherwise</returns>
        public async Task <bool> ContactUsAsync(ContactPersonViewModel aPerson,
                                                IEnumerable <UploadedFileInfo> resumeFiles,
                                                IEnumerable <UploadedFileInfo> codeExampleFiles,
                                                ICredentials credentials,
                                                IRecipientCollection recipients)
        {
            var smtpClient = new SmtpClient(credentials.SmtpServerName, credentials.SmtpPort)
            {
                EnableSsl             = true,
                DeliveryMethod        = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials           = new NetworkCredential(credentials.MailLogin, credentials.MailPassword)
            };

            string messageBody     = aPerson.GenerateMessageBody();
            var    fromAddr        = new MailAddress(credentials.FromAddress, credentials.FromDisplayName, _DefaultEncoding);
            var    emailRecipients = recipients.Recipients;
            var    mailAddresses   =
                emailRecipients.Select(
                    recipient => new MailAddress(recipient.ToAddress, recipient.ToDisplayName, _DefaultEncoding)).ToList();

            foreach (MailAddress toAddr in mailAddresses)
            {
                using (var message = new MailMessage(fromAddr, toAddr)
                {
                    Subject = string.Format("Resume: {0} {1}", aPerson.FirstName, aPerson.LastName),
                    Body = messageBody,
                    DeliveryNotificationOptions = DeliveryNotificationOptions.None,
                    SubjectEncoding = _DefaultEncoding
                })
                {
                    foreach (Attachment attachment in GenerateAttachments(resumeFiles, codeExampleFiles))
                    {
                        message.Attachments.Add(attachment);
                    }

                    try
                    {
                        await smtpClient.SendMailAsync(message).ConfigureAwait(false);
                    }
                    catch (InvalidOperationException invalidOperationEx)
                    {
                        throw new SendingMailException(Resources.ErrorSendingEmail, invalidOperationEx);
                    }
                    catch (SmtpFailedRecipientException smtpFailedRecipientEx)
                    {
                        throw new SendingMailException(Resources.ErrorSendingEmail, smtpFailedRecipientEx);
                    }
                    catch (SmtpException smtpEx)
                    {
                        throw new SendingMailException(Resources.ErrorSendingEmail, smtpEx);
                    }
                }
            }

            return(true);
        }
예제 #2
0
 public ContactUsController(IContactSender contactSender,
                            ICredentials credentials,
                            IRecipientCollection recipients,
                            IResumeManagerRepository resumeManager)
 {
     _contactSender = contactSender;
     _credentials   = credentials;
     _recipients    = recipients;
     _resumeManager = resumeManager;
 }
 public OurContactsController(IRecipientCollection recipients)
 {
     _recipients = recipients;
 }