Отправка писем в Node.js? [закрыто]


291

Я недавно начал программировать свой первый node.js. Тем не менее, я обнаружил, что не могу создать форму для связи со мной, которая отправляется прямо на мою электронную почту, так как я не могу найти модули из узла, который может отправлять электронные письма.

Кто-нибудь знает библиотеку электронной почты node.js или пример скрипта контактной формы?


Оформить заказ: AWS-SES бесплатно 62000 электронных писем для приложений ec2.
Harvey

Ответы:


142

шаблоны узлов электронной почты - намного лучший вариант: https://github.com/niftylettuce/node-email-templates

он также поддерживает Windows


1
Это действительно помогает документам говорить само за себя.
NycCompSci

4
github.com/marak/node_mailer устарела. Следует использовать этот github.com/andris9/Nodemailer
user470370

7
Это потому, что его nodemailer.com теперь я использую его в своем проекте, работает нормально, у nodejitsu не было проблем с отправкой почты через SMTP-серверы Gmail.
Яша

2
За последние два дня я провел несколько часов, пытаясь встать node-email-templatesи бежать. Я хочу просто использовать его как объект, который я инициализирую, а затем использую для отправки. Не могу заставить его работать. Сдаваться.
jcollum

Учебник оказался полезным (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson

162

Nodemailer - это модуль, который дает вам возможность легко отправлять электронные письма при программировании в Node.js. На http://www.nodemailer.com/ есть несколько замечательных примеров использования модуля Nodemailer . Полные инструкции о том, как установить и использовать основные функции Nodemailer, включены в эту ссылку.

У меня лично были проблемы с установкой Nodemailer с помощью npm, поэтому я просто скачал исходный код. Есть инструкции как для установки npm, так и для загрузки исходного кода.

Это очень простой в использовании модуль, и я бы порекомендовал его всем, кто хочет отправлять электронные письма с использованием Node.js. Удачи!


2
nodemailer работал сначала!
Capy

протестировал его как с SMTP, так и с Amazon SES, работает для меня, интегрировал его в платформу ConnectedSets
Жан Винсент

просто, нет тяжелой работы по настройке. Просто скопировал пример кода, изменил мою информацию (читать о безопасности SSL), и это просто сработало. отлично подходит для простого отправителя электронной почты!

Это коммерческий проект сейчас, так что будьте осторожны.
elliotrock

2
Этот ответ должен включать в себя пример
Авраам TS

65

Проверьте emailjs

Потратив много времени на попытки заставить нодмейлер работать с большими вложениями, нашел emailjs и с тех пор счастлив.

Он поддерживает отправку файлов с использованием обычных объектов File, а не больших буферов, как этого требует nodemailer. Означает, что вы можете связать его с, например, грозным для передачи вложений из HTML-формы в почтовую программу. Он также поддерживает очереди.

В общем, не знаю, почему nodejitsu ppl выбрал nodemailer для своей версии, emailjs гораздо более продвинутый.


3
После некоторого длительного использования пришлось его раскошелиться, чтобы решить проблему: если только внутри процесса отправки почты, вещь не будет обрабатывать события сокета и, таким образом, через некоторое время остановится, так как сервер закроет соединение, но нечего было обрабатывать событие и сбрасывать внутренние переменные. Вы можете найти разветвленную версию здесь: https://github.com/silvioster/emailjs . Эта версия работает стабильно в течение достаточно долгого времени, без сбоев.
Сильвио

18
обновив предыдущий комментарий, первоначальный автор исправил эту ошибку и некоторые другие, так что fork больше не нужен. самая новая версия должна быть на https://github.com/eleith/emailjs
Сильвио

1
nodemailer также поддерживает потоки вложений, а не только "огромные буферы"
JoshuaDavid

57

Полный код для отправки электронной почты с помощью модуля nodemailer

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "gmail_id@gmail.com",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <from@gmail.com>",
    to: "to@gmail.com",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: "<b>Node.js New world for me</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

4
Я нашел Nodemailer способ проще, чем node-email-templates. Может быть, это потому, что я просто пытался отправить простой текстовый / базовый html-адрес электронной почты, но я обнаружил, что node-email-templatesнужно больше настроек, тогда как он Nodemailerбыл запущен буквально за 2 минуты.
JVG

4
Кроме gmail? Как мы можем настроить для нашего собственного сервера SMTP?
Баладжи Боггарам Раманараян

1
Я получаю эту ошибку после компиляции с WebPack: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Я пошел к сообщениям как это и затем этой странице, но все еще потерян.
user1063287

2
@ user1063287 Просто удалите параметр «SMTP»
Боян Радивоевич бомбардировщик

1
Просто чтобы вы знали, вы не можете изменить адрес с адреса на что-либо, кроме вашего собственного адреса электронной почты, который вы использовали в качестве аутентификации. Gmail принудительно устанавливает адрес отправителя, чтобы он мог подтвердить полномочия отправителя.
Николай Мордехай

25

Принятый ответ @ JimBastard, кажется, датирован, я посмотрел, и что почтовый lib не был затронут более 7 месяцев, в нем есть несколько ошибок и больше не регистрируется в npm.

nodemailer, безусловно, выглядит как лучший вариант, однако URL, приведенные в других ответах в этой теме, все 404-ые.

nodemailer утверждает, что поддерживает простые плагины для gmail, hotmail и т. д., а также имеет действительно красивую документацию.


9

Вы всегда можете использовать AlphaMail ( раскрытие: я один из разработчиков за этим ).

Просто установите с помощью NPM :

npm install alphamail

Зарегистрируйте учетную запись AlphaMail. Получите токен, и тогда вы сможете начать отправку с помощью сервиса AlphaMail.

var alphamail = require('alphamail');

var emailService = new alphamail.EmailService()
    .setServiceUrl('http://api.amail.io/v1/')
    .setApiToken('YOUR-ACCOUNT-API-TOKEN-HERE');

var person = {
    id: 1234,
    userName: "jdoe75",
    name: {
        first: "John",
        last: "Doe"
    },
    dateOfBirth: 1975
};

emailService.queue(new alphamail.EmailMessagePayload()
    .setProjectId(12345) // ID of your AlphaMail project (determines template, options, etc)
    .setSender(new alphamail.EmailContact("Sender Company Name", "from@example.com"))
    .setReceiver(new alphamail.EmailContact("John Doe", "to@example.org"))
    .setBodyObject(person) // Any serializable object
);

А в графическом интерфейсе AlphaMail ( Dashboard ) вы сможете редактировать шаблон с данными, которые вы отправили:

<html>
    <body>
        <b>Name:</b> <# payload.name.last " " payload.name.first #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.id != null) { #>
            <a href="http://company.com/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="http://company.com/login?username=<# urlencode(payload.userName) #>">Sign In</a>
        <# } #>
    </body>
</html>

Шаблоны написаны на Comlang , это простой язык шаблонов, специально разработанный для электронных писем.


12
Alphamail теперь официально мертв. Очень жаль - я начал использовать его именно из-за этого поста. Желаю разработчикам всего наилучшего в их следующем начинании.
Мазотайм



3

У npm есть несколько пакетов, но ни один еще не достиг 1.0. Лучшие выборы из npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

Кампания - это комплексное решение для отправки электронной почты в Node, которое поставляется с очень простым API.

Вы, например, это так.

var client = require('campaign')({
  from: 'you@gmail.com'
});

Для отправки электронных писем вы можете использовать Mandrill , который является бесплатным и потрясающим. Просто установите свой ключ API, например так:

process.env.MANDRILL_APIKEY = '<your api key>';

(если вы хотите отправлять электронные письма другому провайдеру, проверьте документы)

Затем, когда вы хотите отправить электронное письмо, вы можете сделать это следующим образом:

client.sendString('<p>{{something}}</p>', {
  to: ['someone@gmail.com', 'someone.else@gmail.com'],
  subject: 'Some Subject',
  preview': 'The first line',
  something: 'this is what replaces that thing in the template'
}, done);

Репозиторий GitHub имеет довольно обширную документацию .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.