Отправка электронной почты с помощью 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
объект, а не переменная окружения?
По сути, вы можете передать 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