如何在Meteor中使用我自己的邮件服务器发送电子邮件?

时间:2014-05-30 21:10:37

标签: email meteor smtp

我正在尝试启用email support for my Meteor application,因为我有自己的服务器,所以我也希望使用自己的邮件服务器。所以我在postfix服务器中安装了Debian wheezy并成功发送并通过电子邮件发送到我的GMail地址,这意味着邮件服务器正常运行并发送电子邮件。

当我部署Meteor应用程序并尝试发送电子邮件时,说要重置密码,我的应用程序崩溃时出现以下错误:

Exception while invoking method 'forgotPassword' RecipientError: Can't send mail - all recipients were rejected
at Object.Future.wait (/home/loupax/phial/bundle/programs/server/node_modules/fibers/future.js:326:15)
at smtpSend (packages/email/email.js:94)
at Object.Email.send (packages/email/email.js:155)
...
...

我的MAIL_URL环境变量的格式为MAIL_URL=smtp://my_domain.tld

3 个答案:

答案 0 :(得分:3)

看起来我必须做的就是将MAIL_URL环境变量从smtp://my_domain.tld更改为smtp://localhost。之后一切都运转良好

答案 1 :(得分:0)

您的服务器在亚马逊上吗?有时,SMTP服务器会阻止从某些托管服务提供商发送的整个IP范围内的任何内容,以阻止垃圾邮件。

您可能需要考虑使用其他SMTP服务器,亚马逊的SESMandrill(有陨石包提供帮助)(我个人同时使用SES和{{3 }})。

请注意,它不仅包括Amazons IP块,还有垃圾邮件发送者可以快速设置的任何托管服务提供商。您的SMTP服务器可能会使用其中包含所有这些ips的列表

答案 2 :(得分:0)

对于忘记密码的电子邮件,请按照以下步骤操作

1)在服务器文件夹中创建smtp.js文件,并将其复制到下面的代码中

 Meteor.startup(function () {
   process.env.MAIL_URL = 
   'smtps://abcd@gmail.com:password@smtp.gmail.com:465';
 });

2)将以下代码粘贴到忘记的password.js文件中

   Template.forgot.events({

'click #forgot'(event,template) {
    event.preventDefault();

    let email = $("#email").val();

    // paste below code in server.main.js -> in Meteor.startup function.

    /* Accounts.urls.resetPassword = function(token) {
        return Meteor.absoluteUrl('reset-password/' + token);
    };*/

    Accounts.forgotPassword({email:email},function (error,result) {

        if(error)
        {
            alert(error);
        }
        else
        {
            console.log(result);
            alert("mail sent ..!! Check your mail box");
           FlowRouter.go('/login');
         }
      });
   }

 });

3)服务器文件夹中main.js文件中的以下代码粘贴 导入'../ server / smtp';

Meteor.startup(() => {
  // code to run on server at startup
    Accounts.urls.resetPassword = function(token) {
        return Meteor.absoluteUrl('reset-password/' + token);
    };
});

检查您的邮件