首页 文章

无法从Azure Cloud Service连接到smtp

提问于
浏览
0

我们在Azure上托管了2个 Cloud 服务 .

这两种服务都依赖于我们的smtp服务器来发送邮件 .

问题是azure Cloud 服务无法连接到我们的smtp服务器 .

我们能够在内部机器上使用相同的代码而没有任何问题 . 我们还检查了25端口是否打开,IP地址也没有列入黑名单 .

以下是从 Cloud 服务连接时的错误:

连接尝试失败,因为连接方在一段时间后没有正确响应,或者 Build 的连接失败,因为连接的主机无法响应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);
            }

1 回答

  • 1

    Microsoft建议Azure客户使用经过身份验证的SMTP中继服务(通常通过TCP端口587或443连接,但通常也支持其他端口)从Azure VM或Azure App Services发送电子邮件 . 这些服务专注于发件人信誉,以最大限度地降低第三方电子邮件提供商拒绝邮件的可能性 . 此类SMTP中继服务包括但不限于SendGrid . 您也可以在可以使用的场所运行安全的SMTP中继服务 . 无论订阅类型如何,Azure中的这些电子邮件传递服务的使用绝不受限制 .

    参考:https://blogs.msdn.microsoft.com/mast/2017/11/15/enhanced-azure-security-for-sending-emails-november-2017-update/

    您可能还想引用解决类似问题的this线程,看看是否有帮助 .

相关问题