Надсилання електронних листів у Node.js? [зачинено]


291

Нещодавно я почав програмувати свій перший node.js. Однак я виявив, що я не в змозі створити контактну форму, яка надсилає мені безпосередньо електронну пошту, оскільки я не можу знайти жодного модуля з вузла, який може надсилати електронні листи.

Хтось знає про бібліотеку електронної пошти node.js або зразок сценарію контактної форми?


Оплата: AWS-SES безкоштовно 62000 електронних листів для програм ec2.
Гарві

Відповіді:


142

node-email-templates - це набагато кращий варіант: https://github.com/niftylettuce/node-email-templates

він також підтримує вікна


1
Це дійсно допомагає документам досить пояснювати себе.
NycCompSci

4
github.com/marak/node_mailer застаріло. Слід скористатися цим github.com/andris9/Nodemailer
user470370

7
ось тому, що його nodemailer.com зараз я використовую його у своєму проекті, працює чудово, у nodejitsu не було проблем з відправленням пошти через smtp-сервери gmail.
jascha

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

Підручник виявився цінним (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson

162

Nodemailer - це модуль, який дає можливість легко надсилати електронні листи при програмуванні в Node.js. Існує кілька чудових прикладів використання модуля Nodemailer на веб- сайті http://www.nodemailer.com/ . Повні інструкції щодо встановлення та використання основних функціональних можливостей Nodemailer містяться в цьому посиланні.

У мене особисто були проблеми з установкою Nodemailer за допомогою npm, тому я просто завантажив джерело. Існують інструкції щодо встановлення npm та завантаження джерела.

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


2
спочатку працював нодомайлер!
Capy

перевірив його як на SMTP, так і на Amazon SES, працює для мене, інтегрував його в рамку ConnectedSets
Жан Вінсент

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

Зараз це комерційний проект, тому будьте попереджені.
elliotrock

2
Ця відповідь повинна містити приклад
Авраам TS

65

Перевірте emailjs

Ви витрачаючи багато часу на спроби змусити роботу вузла з великими вкладеннями, знайшли emailjs і раділи з тих пір.

Він підтримує надсилання файлів за допомогою звичайних файлових об'єктів, а не величезних буферів, як цього вимагає ноталайнер. Означає, що ви можете зв’язати це, fe, грізно для передачі вкладених файлів з HTML-форми на пошту. Він також підтримує чергування ..

Загалом, немає поняття, чому nodejitsu ppl обрав nodemailer на основі своєї версії, emailjs просто набагато вдосконаленіший.


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

18
Оновлення до попереднього коментаря, оригінальний автор виправив і цю помилку, і деякі інші, тому форк більше не потрібен. найновіша версія має бути на https://github.com/eleith/emailjs
silvio

1
nodemailer підтримує потоки вкладень також, не тільки "величезні буфери"
JoshuaDavid

57

Повний код для надсилання електронної пошти за допомогою модуля вузлового продавця

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. Я пішов до стовпів , як це і потім цю сторінку , але все ще втрачено.
користувач1063287

2
@ user1063287 Просто видаліть параметр "SMTP"
Боян

1
Оскільки ви знаєте, ви не можете змінити адресу з будь-якої іншої адреси, крім власної електронної адреси, яку ви використовували в якості аутентифікації. Gmail змушує адресу від цієї адреси, щоб він міг підтвердити повноваження відправника.
Микола Мордехай

25

@ Відповідь JimBastard, здається, датується, я подивився, і ця пошта не торкалася протягом 7 місяців, у ній є кілька помилок, і вона більше не реєструється в npm.

nodemailer звичайно виглядає як найкращий варіант, проте URL-адреса, надана в інших відповідях на цю тему, - це все 404'ing.

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 ( інформаційна панель ) ви зможете редагувати шаблон із надісланими вами даними:

<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.