Wysyłasz wiadomości e-mail w Node.js? [Zamknięte]


291

Niedawno zacząłem programować mój pierwszy node.js. Odkryłem jednak, że nie mogę utworzyć formularza kontaktowego, który wysyła bezpośrednio na moją wiadomość e-mail, ponieważ nie mogę znaleźć żadnych modułów z węzła, które mogłyby wysyłać wiadomości e-mail.

Czy ktoś wie o bibliotece e-mailowej node.js lub przykładowym skrypcie formularza kontaktowego?


Zamówienie: bezpłatne wiadomości e-mail 62000 AWS-SES dla aplikacji ec2.
Harvey,

Odpowiedzi:


142

Węzeł-e-mail-szablony to znacznie lepsza opcja: https://github.com/niftylettuce/node-email-templates

ma także obsługę systemu Windows


1
To naprawdę pomaga doktorom wyjaśnić.
NycCompSci,

4
github.com/marak/node_mailer jest przestarzały. Powinien użyć tego github.com/andris9/Nodemailer
user470370

7
to dlatego, że jego nodemailer.com teraz używam go w moim projekcie, działa dobrze, nodejitsu nie miało problemów z wysyłaniem poczty przez serwery smtp gmail.
jascha

2
W ciągu ostatnich dwóch dni spędziłem kilka godzin, próbując wstać node-email-templates. Chcę po prostu użyć go jako obiektu, który zainicjuję, a następnie użyję do wysłania. Nie mogę go uruchomić. Poddawać się.
jcollum

Samouczek okazał się cenny (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson

162

Nodemailer to w zasadzie moduł, który daje możliwość łatwego wysyłania wiadomości e-mail podczas programowania w Node.js. Istnieje kilka świetnych przykładów użycia modułu Nodemailer na stronie http://www.nodemailer.com/ . Pełne instrukcje dotyczące instalacji i korzystania z podstawowych funkcji Nodemailer znajdują się w tym linku.

Osobiście miałem problem z instalacją Nodemailer przy użyciu npm, więc właśnie pobrałem źródło. Istnieją instrukcje dotyczące instalacji npm i pobierania źródła.

Jest to bardzo prosty moduł do użycia i polecam go każdemu, kto chce wysyłać e-maile za pomocą Node.js. Powodzenia!


2
nodemailer działał na początku!
Capy

przetestowałem go zarówno z SMTP, jak i Amazon SES, działa dla mnie, zintegrowałem go z ramami ConnectedSets
Jean Vincent

proste, bez ciężkiej pracy przy konfiguracji. właśnie skopiowałem przykładowy kod, zmieniłem na moje informacje (przeczytaj o bezpiecznym SSL) i po prostu działało. idealne dla prostego nadawcy e-maila!

Teraz jest to projekt komercyjny, więc ostrzegam.
elliotrock

2
Ta odpowiedź powinna zawierać przykład
Abraham TS

65

Sprawdź emailjs

Po marnowaniu czasu na próbę zmuszenia nodemailer do pracy z dużymi załącznikami, znalazłem emailjs i od tamtej pory jest szczęśliwy.

Obsługuje wysyłanie plików przy użyciu normalnych obiektów File, a nie dużych buforów, jak wymaga nodemailer. Oznacza, że ​​możesz połączyć go z, na przykład, potężnym, aby przekazać załączniki z formularza HTML do programu pocztowego. Obsługuje także kolejkowanie.

Podsumowując, nie mam pojęcia, dlaczego nodejitsu ppl wybrał nodemailer, na którym oprze swoją wersję, emailjs jest po prostu znacznie bardziej zaawansowany.


3
Po dłuższym użytkowaniu musiałem rozwidlić go, aby rozwiązać problem: chyba że w procesie wysyłania poczty rzecz nie przetwarzałaby zdarzeń związanych z gniazdami, a więc zatrzymywała się po pewnym czasie bezczynności, ponieważ serwer zamyka połączenie, ale tam nic nie przetworzyło zdarzenia i nie zresetowało zmiennych wewnętrznych. Rozwidloną wersję można znaleźć tutaj: https://github.com/silvioster/emailjs . Ta wersja działa stabilnie już od dłuższego czasu bez żadnych przeciągnięć.
silvio,

18
zaktualizowałem poprzedni komentarz, oryginalny autor naprawił ten błąd i kilka innych, więc rozwidlenie nie jest już potrzebne. najnowsza wersja powinna znajdować się na stronie https://github.com/eleith/emailjs
silvio

1
nodemailer obsługuje również strumienie załączników, nie tylko „ogromne bufory”
JoshuaDavid

57

Wypełnij kod, aby wysłać e-mail za pomocą modułu 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
Znalazłem Nodemailer sposób łatwiejszy w użyciu niż node-email-templates. Może to dlatego, że właśnie próbowałem wysłać zwykły e-mail / zwykły e-mail HTML, ale uznałem, że node-email-templatespotrzebowałem o wiele więcej konfiguracji, podczas gdy Nodemailerdziałałem dosłownie 2 minuty.
JVG

4
Inny niż Gmail? Jak możemy skonfigurować nasz własny serwer smtp?
Balaji Boggaram Ramanarayan

1
Otrzymuję ten błąd po kompilacji z WebPacka: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Poszedłem do stanowisk takich jak ta , a następnie na tej stronie , ale jeszcze stracone.
user1063287,

2
@ user1063287 Wystarczy usunąć parametr „SMTP”
Bojan Radivojevic Bomber

1
Pamiętaj, że nie możesz zmienić adresu z niczego na inny niż własny adres e-mail użyty do uwierzytelnienia. Gmail wymusza adres z tego adresu, aby mógł potwierdzić uprawnienia nadawcy.
Nicholas Mordecai,

25

@ Przyjęta odpowiedź JimBastarda wydaje się być przestarzała, spojrzałem i że lib mailera nie został dotknięty przez ponad 7 miesięcy, ma kilka błędów na liście i nie jest już zarejestrowany w npm.

nodemailer z pewnością wygląda na najlepszą opcję, jednak adres URL podany w innych odpowiedziach w tym wątku to 404'ing.

nodemailer twierdzi, że obsługuje łatwe wtyczki do Gmaila, Hotmaila itp., a także ma naprawdę piękną dokumentację.


9

Zawsze możesz użyć AlphaMail ( ujawnienie: jestem jednym z programistów za tym ).

Wystarczy zainstalować z NPM :

npm install alphamail

Załóż konto AlphaMail. Zdobądź token, a następnie możesz rozpocząć wysyłanie za pomocą usługi 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
);

A w interfejsie GUI AlphaMail ( pulpit nawigacyjny ) będziesz mógł edytować szablon z wysłanymi danymi:

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

Szablony są napisane w Comlang , jest to prosty język szablonów specjalnie zaprojektowany do wiadomości e-mail.


12
Alphamail jest teraz oficjalnie martwy. Bardzo niefortunne - zacząłem go używać właśnie z powodu tego postu. Życząc deweloperom wszystkiego najlepszego w kolejnym przedsięwzięciu.
masotime



3

npm ma kilka pakietów, ale żaden nie osiągnął jeszcze 1.0. Najlepsze typy z npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

Kampania jest kompleksowym rozwiązaniem do wysyłania e-maili w Węźle i ma bardzo prosty interfejs API.

Występujesz w ten sposób.

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

Aby wysyłać e-maile, możesz użyć Mandrill , który jest darmowy i niesamowity. Wystarczy ustawić klucz interfejsu API w następujący sposób:

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

(jeśli chcesz wysyłać wiadomości e-mail za pośrednictwem innego dostawcy, sprawdź dokumenty)

Następnie, jeśli chcesz wysłać wiadomość e-mail, możesz to zrobić w następujący sposób:

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);

Repozytorium GitHub ma dość obszerną dokumentację .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.