private void CreateMailMessage(DeliveryInfo deliveryInfo, MailMessage message)
		{
			var recipients = deliveryInfo.To;
			if (string.IsNullOrEmpty(recipients)) throw new ArgumentNullException(recipients);

			var addressCollection = new MailAddressCollection();

			if (!MailSettings.UseEmailTestMode) addressCollection.Add(recipients);
			else addressCollection.Add(MailSettings.TestEmailAddress);

			foreach (var address in addressCollection)
			{
				message.To.Add(EmailHelper.FixMailAddressDisplayName(address, MailSettings.EmailHeaderEncoding));
			}

			message.From = EmailHelper.FixMailAddressDisplayName(new MailAddress(deliveryInfo.From), MailSettings.EmailHeaderEncoding);

			message.BodyEncoding = Encoding.GetEncoding(MailSettings.EmailBodyEncoding);
			message.SubjectEncoding = Encoding.GetEncoding(MailSettings.EmailSubjectEncoding);
			message.HeadersEncoding = Encoding.GetEncoding(MailSettings.EmailHeaderEncoding);

			message.Body = deliveryInfo.Body;
			message.IsBodyHtml = deliveryInfo.IsBodyHtml;
			message.Subject = deliveryInfo.Subject;

			if (!string.IsNullOrEmpty(deliveryInfo.ReplyTo))
			{
				var replyToCollection = new MailAddressCollection { deliveryInfo.ReplyTo };

				foreach (var address in replyToCollection)
				{
					message.ReplyToList.Add(EmailHelper.FixMailAddressDisplayName(address, MailSettings.EmailHeaderEncoding));
				}
			}
		}
		public void HandleDelivery(DeliveryInfo deliveryInfo)
		{
			try
			{
				using (var message = new MailMessage())
				{
					CreateMailMessage(deliveryInfo, message);

					SmtpClient.Send(message);

					if (_log.IsInfoEnabled)
						_log.InfoFormat("Mail sent to {0}", deliveryInfo.To);
				}
			}
			catch (SmtpFailedRecipientException exc)
			{
				_log.Error("Email sending was failed. Wrong email address " + exc.FailedRecipient +
									". Recipient is missed. " + exc.Message);

				throw;
			}
			catch (Exception ex)
			{
				_log.Error("Error while sending mail", ex);

				throw;
			}
		}