/// <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); } }
/// <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); } }