コード例 #1
0
        public async Task Send(MailConfigType type, EmailMessageModel message)
        {
            var email = new MimeMessage();

            email.To.AddRange(message.Recipients.Select(r => new MailboxAddress(r.Name, r.Address)));
            email.From.AddRange(
                message.From.Select(a => new MailboxAddress(a.Name, a.Address))
                );
            email.Sender = new MailboxAddress(message.SenderAddress);
            if (message.Cc != null)
            {
                email.Cc.AddRange(message.Cc.Select(r => new MailboxAddress(r.Name, r.Address)));
            }
            if (message.Bcc != null)
            {
                email.Bcc.AddRange(message.Bcc.Select(r => new MailboxAddress(r.Name, r.Address)));
            }
            email.Subject = message.Subject;

            var bodyBuilder = new BodyBuilder();

            bodyBuilder.TextBody = message.Content;
            email.Body           = bodyBuilder.ToMessageBody();

            switch (type)
            {
            case MailConfigType.SMTP:
                using (var client = new SmtpClient())
                {
                    var config = _config.SMTP;
                    client.Connect(config.ServerName, config.Port, config.IsUsingSSL);
                    client.AuthenticationMechanisms.Remove("XOAUTH2");
                    client.Authenticate(config.User, config.Password);
                    await client.SendAsync(email);

                    client.Disconnect(true);
                }
                break;

            case MailConfigType.POP3:
                throw new NotImplementedException("POP3 not implemented!");
                break;

            case MailConfigType.IMAP:
                throw new NotImplementedException("IMAP not implemented!");
                break;

            default:
                throw new ArgumentException("Wrong mail protocol!");
                break;
            }
        }
コード例 #2
0
        public async Task Send(MailConfigType type, Mail messageFromDb)
        {
            var message = new EmailMessageModel
            {
                From = messageFromDb.From.Split(';').Select(f => new EmailAdress
                {
                    Name    = f.Split('@')[0],
                    Address = f.Split('@')[1],
                })
                       .ToList(),

                Cc = messageFromDb.CarbonCopyReceivers.Split(';').Select(f => new EmailAdress
                {
                    Name    = f.Split('@')[0],
                    Address = f.Split('@')[1],
                })
                     .ToList(),

                Bcc = messageFromDb.BlindCarponCopyReceivers.Split(';').Select(f => new EmailAdress
                {
                    Name    = f.Split('@')[0],
                    Address = f.Split('@')[1],
                })
                      .ToList(),

                Recipients = messageFromDb.Receivers.Split(';').Select(f => new EmailAdress
                {
                    Name    = f.Split('@')[0],
                    Address = f.Split('@')[1],
                })
                             .ToList(),

                Content = messageFromDb.Content,
                Subject = messageFromDb.Subject,
            };

            await Send(type, message);
        }