Esempio n. 1
0
        public void Send(InternetMailMessage message,
                         InternetMailTextProcessing processText = InternetMailTextProcessing.Process,
                         InternetMailProtocol protocol          = InternetMailProtocol.Smtp)
        {
            if (protocol == InternetMailProtocol.Pop3)
            {
                throw new RuntimeException("Недопустимо указывать POP3 в качестве протокола отправки почты!");
            }

            IMailSender sender = null;

            if (protocol == InternetMailProtocol.Smtp)
            {
                sender = smtpClient;
            }
            else if (protocol == InternetMailProtocol.Imap)
            {
                sender = receiver as ImapReceiver;
                if (sender == null)
                {
                    throw new RuntimeException("Соединение IMAP не установлено!");
                }
            }

            sender?.Send(message, processText);
        }
        public MimeMessage CreateNativeMessage(InternetMailTextProcessing processText = InternetMailTextProcessing.Process)
        {
            if (processText == InternetMailTextProcessing.Process)
            {
                ProcessTexts();
            }

            var messageToSend = new MimeMessage();

            if (Sender.DataType == DataType.String)
            {
                messageToSend.From.Add(new MailboxAddress("", Sender.AsString()));
            }
            else if (Sender is InternetMailAddress)
            {
                messageToSend.From.Add((Sender as InternetMailAddress).GetInternalObject());
            }
            else
            {
                throw new RuntimeException("Неверный тип отправителя!");
            }

            foreach (var recipient in To)
            {
                messageToSend.To.Add(recipient.GetInternalObject());
            }

            foreach (var replyTo in ReplyTo)
            {
                messageToSend.ReplyTo.Add(replyTo.GetInternalObject());
            }

            messageToSend.Subject = Theme;

            if (Texts.Count() == 1)
            {
                messageToSend.Body = Texts.Get(0).CreateTextPart();
            }
            else
            {
                var body = new Multipart();
                foreach (var text in Texts)
                {
                    var part = text.CreateTextPart();
                    body.Add(part);
                }
                messageToSend.Body = body;
            }

            return(messageToSend);
        }
Esempio n. 3
0
        public void Send(InternetMailMessage message, InternetMailTextProcessing processText)
        {
            var messageToSend = message.CreateNativeMessage(processText);

            _client.Send(messageToSend);
        }