使用 Gmail SMTP 发送电子邮件 - Meteorjs

Sending email using Gmail SMTP - Meteorjs

您好,我正在尝试设置我的 gmail 帐户来为我的 Meteor 应用程序发送电子邮件,目前还不是很容易

server.js

Meteor.startup(function () {
  smtp = {
    username: 'xxxxx',   // eg: server@gentlenode.com
    password: 'YYYYYYYY',   // eg: 3eeP1gtizk5eziohfervU
    server:   'smtp.gmail.com',  // eg: mail.gandi.net
    port: 465
  }

  process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
});

Email.send({
  from: "meteor.email.2014@gmail.com",
  to: "xxxx@gmail.com",
  subject: "Meteor Can Send Emails via Gmail",
  text: "Its pretty easy to send emails via gmail."
});

而且测试邮件从来没有发送过下面的错误代码,说我还没有设置环境变量。

I20150715-18:14:02.641(0)? ====== BEGIN MAIL #0 ======
I20150715-18:14:02.642(0)? (Mail not sent; to enable sending, set the MAIL_URL environment variable.)
I20150715-18:14:02.643(0)? MIME-Version: 1.0
I20150715-18:14:02.643(0)? From: meteor.email.2014@gmail.com
I20150715-18:14:02.643(0)? To: xxxx@gmail.com
I20150715-18:14:02.643(0)? Subject: Meteor Can Send Emails via Gmail
I20150715-18:14:02.643(0)? Content-Type: text/plain; charset=utf-8
I20150715-18:14:02.643(0)? Content-Transfer-Encoding: quoted-printable
I20150715-18:14:02.644(0)? 
I20150715-18:14:02.644(0)? Its pretty easy to send emails via gmail.
I20150715-18:14:02.645(0)? ====== END MAIL #0 ======

这可能是因为我在 C9 上 运行 吗?

谢谢

但还是决定回答我自己的问题。

我没有也不能设置 C9 或我的测试站点环境变量,这就是原因。

糟糕的是cloud9不允许设置环境变量。也许您可以设置 Meteor.settings 对象而不是环境变量?

http://docs.meteor.com/#/full/meteor_settings

本质上,您可以在启动时使用 --settings 将 JSON 传递给流星。这些将仅在服务器端可用,除非包装在根的 "public" 对象下。

{
  'public': {
     'some-setting': 'some-value'
  },
  'other-setting': 'other-value'
}

这是一种不处理环境变量的变通方法。由于核心电子邮件包始终查看 MAIL_URL 环境变量,您可能需要通过另一个 service/provider.

发送电子邮件

Mandrill(由 Mailchimp 提供)有相当大的免费套餐,可让您发送交易电子邮件。您甚至可以在 mailchimp 中制作邮件模板,导出到 HTML,导入到 mandrill 并在您的 API 调用中传入合并变量。

更好的是,有一个非常棒的包可以写入 Mandrill API。 https://atmospherejs.com/wylio/mandrill

希望对您有所帮助!

埃利奥特

Meteor.startup(callback)方法是在Meteor初始化结束时执行的,但是你是在启动前发送邮件,所以你应该在同一个块中发送,在process.env.MAIL_URL之后..

你可以使用C9设置环境变量!当你 运行 meteor.

你就把它传进去

但是您不能在 c9 上使用 SMTP 发送电子邮件!

为了让我的生活更轻松,我只是不使用 Meteor 在 c9 上测试我的电子邮件。 如果我绝对需要绕过电子邮件功能并使用自定义电子邮件,而不是使用 MailGun REST API(不是 SMTP!!)发送 参见