我可以使用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);
}
}
答案 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();
以下是演示代码。
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();
}
或者我需要使用Sendgrid吗?
在我看来,SendGrid也是一个不错的选择,我们也可以使用Azure上的免费价格层。我也在myside上测试它。它也正常工作。我们还可以从azure official document获取更多详细信息。
A