【发布时间】:2012-12-23 01:48:41
【问题描述】:
var SITE_URL = Meteor.absoluteUrl();
function sendEmailNotification(type, sourceUser, recipients, notificationObject) {
var emailFrom = 'server@example.com';
var emailSubject = 'MyApp: ';
var emailBody = '';
$.each(recipients, function (index, recipient) {
recipients[index] = recipient + '@example.com';
});
switch(type) {
case 'item_assigned':
emailSubject += notificationObject.item_title;
emailBody += '<div style="padding:10px;">';
emailBody += sourceUser;
emailBody += ' has assigned you an action item';
emailBody += '</div>'
break;
case 'list_shared':
emailSubject += notificationObject.list_title;
emailBody += '<div style="padding:10px;">';
emailBody += sourceUser;
emailBody += ' has shared a list with you: ';
emailBody += '<a href="' + SITE_URL + '#' + notificationObject.list_id + '">' + notificationObject.list_title + '</a>';
emailBody += '</div>'
break;
}
if (Meteor.isServer) {
// This function only runs on server
Email.send({
from: emailFrom,
bcc: recipients,
subject: emailSubject,
html: emailBody
});
}
}
上述函数位于根目录下的 JS 文件中(因此其代码对客户端和服务器都可用)。但是当我在我的客户端代码中调用它时,什么也没有发生。我的应用程序中包含email 包。在我的本地机器(Windows 7)上,我没有设置 MAIL_URL 变量。因此,调用Email.send() 函数理想情况下应该在命令提示符下产生输出,但实际上没有输出。
在我们的生产服务器上,SMTP 已正确设置,其他应用程序能够发送具有相同设置的电子邮件。我已经在那里正确配置了MAIL_URL 环境变量,但仍然没有发送电子邮件。
谁能告诉我我的代码是否有问题?有什么我做的不对吗?
P.S.:我什至尝试像下面的代码一样直接调用 Email.send(),但仍然没有任何反应。
if (Meteor.isServer) {
Email.send({
from: 'server@example.com',
to: 'my-gmail-id@gmail.com',
subject: 'This is a test email',
html: '<b>Congrats, it works!</b>'
});
}
}
});
【问题讨论】:
-
您也可以发布您的解决方案作为您自己问题的答案,这既可以为您赢得声誉,也可以帮助未来的访问者!
标签: javascript email meteor