为了获得完整的注册确认,我正在尝试向要唱歌的用户发送确认邮件。我正在使用node.js,并且对于邮件发送,我已经尝试了nodemailer和mailgun-js。在localhost上进行测试时,无论使用nodemailer / mailgun还是一切都很好,电子邮件可以完美发送。但是,一旦我deploy它(在带有ubuntu的azure虚拟机上),电子邮件不发送就可以了。我已经尝试了许多不同的方法来解决这个问题,但是都没有成功:都具有相同的行为:在本地主机上发送邮件,但是从每个特定文档中使用相同代码从实时服务器运行时什么也没有发生。什么可能阻止服务器发送电子邮件?
另一个重要线索:在服务器上,将命令行与swaks一起使用,邮件被[[成功地发送”。也是一个独立的js文件,其中包含用于从服务器发送电子邮件的代码。
var API_KEY = 'MY_API_KEY';
var DOMAIN = 'MY_DOMAIN_NAME';
var HOST = 'MY_EU_HOST';
var mailgun = require('mailgun-js')({apiKey: API_KEY, domain: DOMAIN, host: HOST});
const data = {
from: 'Excited User <[email protected]>',
to: '[email protected]',
subject: 'Hello',
text: 'Testing some Mailgun awesomeness!'
};
mailgun.messages().send(data, (error, body) => {
console.log(body);
});
如果您使用端口25发送电子邮件,我认为这是根本原因。
如this Microsoft official doc所示:
我们建议您使用经过身份验证的SMTP中继服务(通常通过TCP端口587或443连接,但也支持其他端口)从Azure VM或Azure App Services发送电子邮件。这些服务用于维护IP或域信誉,以最大程度地减少第三方电子邮件提供商拒绝邮件的可能性。此类SMTP中继服务包括但不限于SendGrid。它的也有可能您正在运行安全的SMTP中继服务您可以使用的本地。
我认为这是解决您的问题的解决方法。
希望有帮助。