尽管设置了MAIL_URL环境变量,但流量邮件仍未发送

时间:2015-05-02 05:41:10

标签: javascript email meteor coffeescript

我在终端“Mail not sent;要启用发送,设置MAIL_URL环境变量”中收到此错误消息。尽管设置了MAIL_URL环境变量。在此消息之后,整个邮件内容html被转储到终端中。我正在使用2个流星包发送电子邮件:yogiben:漂亮的电子邮件和带有mailgun api服务的电子邮件。

以下是邮件配置和发送电子邮件的源代码:

if Meteor.isServer
    Meteor.startup ->
        process.env.MAIL_URL = 'smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587'
        return


    PrettyEmail.options = 
        from: 'primaryemail@gmail.com'

        siteName: 'Meteor Test'
        companyAddress: 'sdfsf, gdfg-df'
        companyName: 'Code to Create'
        companyUrl: 'http://example.com'

    Accounts.sendVerificationEmail ->
        Meteor.userId()

此文件保存在Project_Directory / both / _config目录中。我目前正在本地ubuntu服务器上开发这个应用程序。

2 个答案:

答案 0 :(得分:0)

我认为对sendVerificationEmail的调用应该是:

Accounts.sendVerificationEmail Meteor.userId()

根据http://docs.meteor.com/#/full/accounts_sendverificationemail

的文档

如果该代码是您正在使用的确切代码,那么由于每段代码的运行顺序(回调以异步方式运行),您可能会遇到问题。启动回调将在PrettyEmail.optionsAccounts.sendVerificationEmail

之后运行

如果你按如下方式缩进这两个部分,它应该按预期工作:

if Meteor.isServer
    Meteor.startup ->
        process.env.MAIL_URL = 'smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587'

        PrettyEmail.options = 
            from: 'primaryemail@gmail.com'
            siteName: 'Meteor Test'
            companyAddress: 'sdfsf, gdfg-df'
            companyName: 'Code to Create'
            companyUrl: 'http://example.com'

        Accounts.sendVerificationEmail Meteor.userId()

如果失败,在运行应用程序之前设置MAIL_URL也是值得的,例如:

MAIL_URL="smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587" meteor

编辑: 您的示例代码不安全:如果您要将此代码保留在' both'目录,然后访问您网站的任何人都可以看到您的mailgun凭据。您应该将服务器代码放入'服务器'目录或至少在代码之外设置MAIL_URL,如上所示。

答案 1 :(得分:0)

我遇到了同样的错误。诀窍是不在应用程序中包含MAIL_URL,而是在运行meteor本身的终端中。

使用以下命令运行meteor:

MAIL_URL =" SMTP://postmaster@sandbox****.mailgun.org:XXXX@smtp.mailgun.org:587"流星

我在Ubuntu终端上试过这个,因此也可以在Mac上运行。