我们在Azure上托管了2个云服务。
这两项服务都依赖于我们的smtp服务器来发送邮件。
问题是azure云服务无法连接到我们的smtp服务器。
我们可以在内部机器上使用相同的代码而不会出现任何问题。我们还检查了25端口是否打开,IP地址也没有列入黑名单。
以下是从云服务连接时的错误:
连接尝试失败,因为连接方没有 在一段时间后正确回应,或建立连接 失败,因为已连接的主机无法响应111.93.111.42:25
电子邮件发送逻辑
MailMessage message = new MailMessage(senderID, reminder.UserName, template.Subject, body);
message.From = new MailAddress(data.SenderEmail, data.SenderName);
message.IsBodyHtml = true;
try
{
SmtpClient smtp = new SmtpClient
{
Host = data.SMTPServer, // smtp server address here...
Port = data.PortNo,
EnableSsl = data.SSL,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new System.Net.NetworkCredential(senderID, senderPassword),
Timeout = 30000,
};
smtp.Send(message);
//Thread th = new Thread(() => { smtp.Send(message); });
//th.Start();
}
catch (Exception ex)
{
ErrorLogging.ErrorLog(ex, "Error Reminders send Mail - Employee Reminders Mail Error Message : " + ex.Message, "Employee Reminders Mail", "0", "EmployeeRemindersMail", schemaName, companyId);
}
答案 0 :(得分:1)
Microsoft建议Azure客户使用经过身份验证的SMTP中继服务(通常通过TCP端口587或443连接,但通常也支持其他端口)从Azure VM或Azure App Services发送电子邮件。这些服务专注于发件人信誉,以最大限度地降低第三方电子邮件提供商拒绝邮件的可能性。此类SMTP中继服务包括但不限于SendGrid。您也可以在可以使用的场所运行安全的SMTP中继服务。 无论订阅类型如何,都不会限制使用这些电子邮件传递服务。
您可能还想引用解决类似问题的this帖子,看看是否有帮助。
答案 1 :(得分:0)
请注意-从上面链接的文章中-企业Azure客户端可以直接从Azure发送SMTP消息:
“对于企业协议Azure用户,在不使用经过身份验证的中继的情况下发送电子邮件的技术能力没有改变。新的和现有的企业协议用户都可以尝试将Azure VM的出站电子邮件直接传递到外部电子邮件提供商,而不受任何限制Azure平台。尽管不能保证电子邮件提供商会接受任何给定用户的传入电子邮件,但是Azure平台不会阻止企业协议订阅中VM的传递尝试。您必须直接与电子邮件提供商合作进行修复任何涉及特定提供商的邮件传递或垃圾邮件过滤问题。”