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

时间:2015-07-15 18:17:57

标签: meteor cloud9-ide

您好我正在尝试设置我的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上运行吗?

由于

4 个答案:

答案 0 :(得分:3)

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

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

基本上,当你使用-settings启动它时,你可以将JSON传递给meteor。这些只能在服务器端提供,除非包含在" public"根的对象。

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

这是一个处理没有环境变量的工作。由于核心电子邮件包始终查看MAIL_URL环境变量,您可能需要通过其他服务/提供商发送电子邮件。

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

更好的是,有一个用于写入Mandrill API的kick-ass包。 https://atmospherejs.com/wylio/mandrill

希望有所帮助!

埃利奥特

答案 1 :(得分:1)

但无论如何我决定回答我自己的问题。

我没有,我无法设置C9或我的测试网站env变量,所以这就是原因。

答案 2 :(得分:0)

在Meteor初始化结束时执行$id = 'your id'; $this->db->select("*"); $this->db->from("table_name"); $this->db->where('id','$id'); $query = $this->db->get(); return $query->result_array(); 方法,但是您在启动之前发送了电子邮件,因此您应该在{{1}}之后在同一个块中发送它。

答案 3 :(得分:0)

您可以使用C9设置环境变量!你只需在运行流星时传入它。

但是你不能使用SMTP发送电子邮件,尽管在c9上!

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

相关问题