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