Отправка электронной почты с помощью 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 ======

Может ли это быть из-за того, что я запускаю это на С9?

Спасибо

4 ответа

Решение

Отстой, что cloud9 не позволяет устанавливать переменные окружения. Возможно, вы можете установить Meteor.settings объект, а не переменная окружения?

http://docs.meteor.com/

По сути, вы можете передать JSON метеору, когда запустите его с помощью --settings. Они будут доступны только на стороне сервера, если они не заключены в "публичный" объект корня.

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

Это обходной путь для работы с никакими переменными. Поскольку основной пакет электронной почты всегда просматривает переменную среды MAIL_URL, вам, вероятно, потребуется отправить электронную почту через другого поставщика услуг.

Mandrill (от Mailchimp) имеет значительный бесплатный уровень и позволит вам отправлять транзакционную электронную почту. Вы даже можете создать почтовый шаблон в mailchimp, экспортировать в HTML, импортировать в mandrill и передавать переменные слияния в вызовах API.

А еще лучше, есть отличный пакет для записи в Mandrill API. https://atmospherejs.com/wylio/mandrill

Надеюсь, это поможет!

Elliott

Но все равно решил ответить на свой вопрос.

Я не сделал и не могу установить переменную env для C9 или моего сайта тестирования, вот почему.

Meteor.startup(callback) Метод выполняется в конце инициализации Meteor, но вы отправляете свою электронную почту до запуска, поэтому вы должны отправить ее в том же блоке, после того, как process.env.MAIL_URL..

Вы можете установить переменные среды, используя C9! Вы просто передаете это, когда запускаете метеор.

НО вы не можете отправлять электронную почту, используя SMTP, хотя на C9!

Чтобы облегчить мне жизнь, я просто не проверяю свою электронную почту на c9 с Meteor. Если мне абсолютно необходимо обойти функцию электронной почты и использовать вместо нее пользовательский e-mail, который отправляет с помощью MailGun REST API (НЕ SMTP!!). См. Отправка электронной почты с помощью Gmail SMTP - Meteorjs

Другие вопросы по тегам