Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="server">The server<see cref="DefaultServer"/></param>
        /// <param name="toAddress">The toAddress<see cref="string"/></param>
        /// <returns>A <see cref="Task{T}"/> representing the async operation</returns>
        private async Task SendMessage_MailKit_Async(DefaultServer server, string toAddress, string fromAddress = "*****@*****.**", MailKit.Security.SecureSocketOptions secureSocketOptions = MailKit.Security.SecureSocketOptions.None)
        {
            MimeMessage message = NewMessage(toAddress, fromAddress);

            using (MailKit.Net.Smtp.SmtpClient client = new MailKit.Net.Smtp.SmtpClient(new SmtpClientLogger(this.output)))
            {
                client.CheckCertificateRevocation          = false;
                client.ServerCertificateValidationCallback = (mysender, certificate, chain, sslPolicyErrors) => {
                    return(true);
                };
                client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
                await client.ConnectAsync("localhost", server.PortNumber, secureSocketOptions).ConfigureAwait(false);

                await client.SendAsync(new FormatOptions { International = true }, message).ConfigureAwait(false);

                await client.DisconnectAsync(true).ConfigureAwait(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Sends a <see cref="EmailMessage"/>
        /// </summary>
        /// <param name="emailMessage"></param>
        public void Send(EmailMessage emailMessage)
        {
            //Get Message Client
            var message = new MimeMessage();


            //Add email reciever to Message Client
            message.To.AddRange(emailMessage.ToAddresses.Select(x => new MailboxAddress(x.Name, x.Address)));

            //Add email sender to Message Client
            message.From.AddRange(emailMessage.FromAddresses.Select(x => new MailboxAddress(x.Name, x.Address)));

            //Add Subject to Message Client
            message.Subject = emailMessage.Subject;

            //Add the Content in HTML Format to Message Client
            message.Body = new TextPart(TextFormat.Html)
            {
                Text = emailMessage.Content
            };


            //Get SSL Settings
            var options = new MailKit.Security.SecureSocketOptions();

            switch (_emailConfiguration.SecureOptions)
            {
            case "SSL":
                options = MailKit.Security.SecureSocketOptions.SslOnConnect;
                break;

            case "TLS":
                options = MailKit.Security.SecureSocketOptions.StartTls;
                break;

            case "TLSlight":
                options = MailKit.Security.SecureSocketOptions.StartTlsWhenAvailable;
                break;

            case "None":
                options = MailKit.Security.SecureSocketOptions.None;
                break;

            default:
                options = MailKit.Security.SecureSocketOptions.Auto;
                break;
            }

            //Gets the emailClient
            using (var emailClient = new MailKit.Net.Smtp.SmtpClient())
            {
                //Connect with the SMTP Settings from Config File (Dependencie Injection)
                emailClient.Connect(_emailConfiguration.SmtpServer, _emailConfiguration.SmtpPort, options);

                //Remove OAuth Header
                emailClient.AuthenticationMechanisms.Remove("XOAUTH2");

                //Authenticat with the Server with the Settings from Config File (Dependencie Injection)
                emailClient.Authenticate(_emailConfiguration.SmtpUsername, _emailConfiguration.SmtpPassword);

                //Sends the Smime Message
                emailClient.Send(message);

                //Logout from Server
                emailClient.Disconnect(true);
            }
        }