流星JS:“邮件未发送;要启用发送,请设置MAIL_URL环境变量“
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流星JS:“邮件未发送;要启用发送,请设置MAIL_URL环境变量“相关的知识,希望对你有一定的参考价值。
我收到以下邮件错误:
“邮件未发送;要启用发送,请设置MAIL_URL环境变量。”
不知道为什么。请帮忙。我仔细检查了邮件服务器是好的。试图从流星站点翻转:https://docs.meteor.com/environment-variables.html#MAIL-URL
但仍然得到错误。
我的代码在server文件夹中,这是config.js文件:
AWS.config.update({
accessKeyId: Meteor.settings.private.s3Settings.awsAccessKeyId,
secretAccessKey: Meteor.settings.private.s3Settings.awsSecretKey,
});
STS = new AWS.STS();
S3 = new AWS.S3();
Mailer.config({
from: 'export@INSIDEDOMAIN.com',
replyTo: 'export@INSIDEDOMAIN.com',
addRoutes: false
});
Meteor.startup(() => {
Mailer.init({
templates: Templates
});
if (Meteor.isProduction) {
process.env.MAIL_URL = 'smtp://export%40INSIDEDOMAIN.com:INSIDEPASS@mail.INSIDEDOMAIN.com:465/';
}
Meteor.call('check_users_trial', function(err) {
if (err) {
console.log(err);
}
});
});
SyncedCron.start();
Meteor.methods({
check_users_trial: function() {
function checkSubscriptions() {
const fromDate = new Date(new Date().setDate(new Date().getDate() - 15)),
toDate = new Date(new Date().setDate(new Date().getDate() - 13));
const users = Accounts.users.find({
'profile.isSubscribed': false,
'profile.warningEmailSent': false,
createdAt: {
$gt: fromDate,
$lt: toDate
},
roles: {
$ne: 'admin'
}
});
users.forEach(function(user) {
if (!user.profile.isSubscribed) {
let isSubscriptionValid = false;
const today = new Date();
const registerDate = new Date(user.createdAt);
const checkDate = registerDate.setDate(registerDate.getDate() + 14);
if (checkDate > today.getTime()) {
isSubscriptionValid = true;
}
if (!isSubscriptionValid) {
Meteor.call('send_warining_email_trial', user.emails[0].address, function(error) {
if (error) {
console.log(error);
} else {
Accounts.users.update({
_id: user._id
}, {
$set: {
'profile.warningEmailSent': true
}
});
}
});
}
}
});
}
SyncedCron.add({
name: 'Send emails to users, whose trial period ended.',
schedule: function(parser) {
return parser.text('every 1 hours');
},
job: function() {
checkSubscriptions();
}
});
}
});
答案
process.env.MAIL_URL
只在startup()
结束后才设定,这已经太晚了。
移动以下行
if (Meteor.isProduction) {
process.env.MAIL_URL = 'smtp://export%40INSIDEDOMAIN.com:INSIDEPASS@mail.INSIDEDOMAIN.com:465/';
}
在你的Meteor.startup
电话之上。并确保isProduction
实际上是true
,否则该代码将不会执行。
以上是关于流星JS:“邮件未发送;要启用发送,请设置MAIL_URL环境变量“的主要内容,如果未能解决你的问题,请参考以下文章