我在终端“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服务器上开发这个应用程序。
答案 0 :(得分:0)
我认为对sendVerificationEmail
的调用应该是:
Accounts.sendVerificationEmail Meteor.userId()
根据http://docs.meteor.com/#/full/accounts_sendverificationemail
的文档如果该代码是您正在使用的确切代码,那么由于每段代码的运行顺序(回调以异步方式运行),您可能会遇到问题。启动回调将在PrettyEmail.options
和Accounts.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上运行。