我需要Sendgrid或Mailkit - 从azure webjob发送电子邮件

时间:2017-08-03 14:12:10

标签: console-application .net-core sendgrid azure-webjobs mailkit

我可以使用Mailkit使用组织smtp服务器从azure webjob发送电子邮件吗?或者我需要使用Sendgrid?

我是一个.net核心1.1控制台应用程序,然后我作为azure webjob托管。

出于某种原因,我无法使用组织Smtp服务器让我的webjob使用Mailkit。作业成功运行,不记录任何错误。但是无法发送邮件..

这是我使用mailkit的代码

using (var client = new SmtpClient())
{
    try { 
    // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
    client.ServerCertificateValidationCallback = (s, c, h, e) => true;


        Logger.LogInformation("Ready to connect to smtp server");
        client.Connect(Constants.SMTP_HOST, 25, false);
        Logger.LogInformation("connected to smtp server");
        // Note: since we don't have an OAuth2 token, disable
        // the XOAUTH2 authentication mechanism.
        client.AuthenticationMechanisms.Remove("XOAUTH2");

        Logger.LogInformation("Ready to send email");
        client.Send(message);

    }
    catch (Exception ex) {
        Logger.LogError("An error occurred");
        Logger.LogError(ex.StackTrace);
    }
    finally {
        client.Disconnect(true);
    }
}

1 个答案:

答案 0 :(得分:0)

  

我可以使用Mailkit使用组织smtp服务器从azure webjob发送电子邮件吗?

如果您使用组织smtp服务器,那么应​​确保允许您的电子邮件服务器策略。

我使用 google 电子邮件在Azure WebJob中测试Mailkit。它在我身边正常工作。在此之前,我为我的Gmail帐户启用了var message = new MimeMessage(); message.From.Add(new MailboxAddress("Tom Gmail", "xx@gmail.com")); message.To.Add(new MailboxAddress("Tom Hotmail", "xxx@hotmail.com")); message.Subject = "I am a mail subject"; message.Body = new TextPart("plain") { Text = "I am a mail body." }; using (var client = new SmtpClient()) { client.Connect("smtp.gmail.com", 587); // Note: since we don't have an OAuth2 token, disable // the XOAUTH2 authentication mechanism. client.AuthenticationMechanisms.Remove("XOAUTH2"); // Note: only needed if the SMTP server requires authentication client.Authenticate("sunguiguan@gmail.com", "@WSX3edc"); client.Send(message); client.Disconnect(true); } Console.WriteLine("send mail successful"); Console.Read();

enter image description here

以下是演示代码。

     var apiKey ="ApiKey";//System.Environment.GetEnvironmentVariable("SENDGRID_APIKEY");
     var client = new SendGridClient(apiKey);
     var msg = new SendGridMessage()
     {
               From = new EmailAddress("xxx@hotmail.com", "Send Grid"),
                Subject = "Hello World from the SendGrid CSharp SDK!",
                PlainTextContent = "Hello, Email!",
                HtmlContent = "<strong>Hello, Email!</strong>"
            };
            msg.AddTo(new EmailAddress("xxxx@gmail.com", "Test User"));
            client.SendEmailAsync(msg).Wait();
    }

enter image description here

  

或者我需要使用Sendgrid吗?

在我看来,SendGrid也是一个不错的选择,我们也可以使用Azure上的免费价格层。我也在myside上测试它。它也正常工作。我们还可以从azure official document获取更多详细信息。

A