2015-05-02 36 views
1

我在終端「郵件未發送;要啓用發送,設置MAIL_URL環境變量」中收到此錯誤消息。儘管設置了MAIL_URL環境變量。在此消息之後,整個郵件內容html被轉儲到終端。我使用2個流星包發送電子郵件:yogiben:pretty-emails和帶有mailgun api服務的電子郵件。儘管設置了MAIL_URL環境變量,流星郵件仍未發送

下面是郵件的配置和發送電子郵件的源代碼:

if Meteor.isServer 
    Meteor.startup -> 
     process.env.MAIL_URL = 'smtp://sandboxid.mailgun.org:[email protected]:587' 
     return 


    PrettyEmail.options = 
     from: '[email protected]' 

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

    Accounts.sendVerificationEmail -> 
     Meteor.userId() 

這個文件保存Project_Directory /都/ _config目錄內。我目前正在本地ubuntu服務器上開發這個應用程序。

回答

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:[email protected]:587' 

     PrettyEmail.options = 
      from: '[email protected]' 
      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:[email protected]:587" meteor 

編輯: 你的代碼示例是不安全的:如果您在「兩」保持此代碼目錄,那麼訪問你的網站的任何人都將能夠看到你的mailgun憑證。您應該將服務器代碼放在'服務器'目錄中,或至少將MAIL_URL設置爲代碼之外,如上所示。

+0

我在使用上面聲明的代碼時遇到了這個錯誤信息錯誤:只能在方法調用中調用Meteor.userId。在發佈函數中使用this.userId。' –

+0

您可能無法在Meteor.startup中使用Meteor.userId()。假設這只是你正在測試的一些代碼,我現在只需要對userId進行硬編碼,例如'''Accounts.sendVerificationEmail'bcdefsahjkda''''顯然將其設置爲存在的用戶標識。儘管如此,這應該在流星方法中起作用。 –

0

我遇到了同樣的錯誤。訣竅是不在應用程序中包含MAIL_URL,而是在運行流星本身的終端中。

使用下面的命令來運行流星:

MAIL_URL = 「SMTP://[email protected]****.mailgun.org:[email protected]:587」 流星

我在Ubuntu Terminal上試過這個,因此也應該在Mac上工作。