【问题标题】:Sending email using Gmail SMTP - Meteorjs使用 Gmail SMTP 发送电子邮件 - Meteorjs
【发布时间】:2015-07-15 18:17:56
【问题描述】:

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

谢谢

【问题讨论】:

  • 看来这些链接会帮助你One & Two
  • 不确定这是否会有所帮助,但可以尝试使用端口 25 或 587。取决于您的配置:support.google.com/a/answer/176600?hl=en
  • 可能是因为我在Cloud9平台无法设置我的测试站点的环境变量?

标签: meteor cloud9-ide


【解决方案1】:

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

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

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

{
  '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

希望有帮助!

艾略特

【讨论】:

  • 很好,还没试过,但看起来很棒,你应该做一个关于在 Meteor 中设置电子邮件的完整教程,我在网上找到的大部分教程要么不完整,要么已经过时。
  • 在 Cloud9 上设置环境变量应该没有问题。您可以像在本地计算机上一样在 shell 上执行此操作,或者如果您希望特定环境变量仅对正在运行的应用程序可用,则运行面板上有一个 ENV 按钮,可让您设置自定义环境变量。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您可以使用 C9 设置环境变量!运行meteor时直接传入即可。

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

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

      【讨论】:

        猜你喜欢
        • 2016-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-14
        • 2015-10-22
        • 2014-12-24
        • 2017-05-12
        • 1970-01-01
        相关资源
        最近更新 更多