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
パッケージが含まれています。MAIL_URL
ローカルマシン(Windows 7)では、変数が設定されていません。したがって、Email.send()
関数を呼び出すと、コマンドプロンプトで出力が生成されるのが理想的ですが、実際には何も出力されません。
本番サーバーでは、SMTPが適切に設定されており、他のアプリケーションも同じ設定でメールを送信できます。そこで環境変数を正しく設定しましたMAIL_URL
が、それでもメールは送信されません。
私のコードに問題があるかどうか誰かに教えてもらえますか?私が正しくやっていないことはありますか?
PS:以下のコードのように、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>'
});
}
}
});