Envoi d'e-mails dans Node.js? [fermé]

291

J'ai récemment commencé à programmer mon premier node.js. Cependant, j'ai découvert que je ne suis pas en mesure de créer un formulaire de contact qui envoie directement à mon e-mail car je ne trouve aucun module du nœud capable d'envoyer des e-mails.

Quelqu'un connaît-il une bibliothèque de messagerie node.js ou un exemple de script de formulaire de contact?

NycCompSci
la source
Paiement: AWS-SES 62000 e-mails gratuits pour les applications ec2.
Harvey

Réponses:

142

node-email-templates est une bien meilleure option: https://github.com/niftylettuce/node-email-templates

il prend également en charge les fenêtres

JimBastard
la source
1
Cela aide vraiment les documents à être assez explicites.
NycCompSci
4
github.com/marak/node_mailer est déconseillé. Devrait utiliser ce github.com/andris9/Nodemailer
user470370
7
c'est parce que c'est nodemailer.com maintenant que je l'utilise dans mon projet, fonctionne bien, nodejitsu n'a eu aucun problème pour envoyer du courrier via les serveurs smtp de gmail.
jascha
2
J'ai passé quelques heures au cours des deux derniers jours à essayer d'obtenir node-email-templates opérationnel. Je veux juste l'utiliser comme un objet que j'initialise et ensuite utiliser pour envoyer. Je ne peux pas le faire fonctionner. Abandonner.
jcollum
Le tutoriel s'est avéré précieux (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson
162

Nodemailer est essentiellement un module qui vous permet d'envoyer facilement des e-mails lors de la programmation dans Node.js. Il existe de très bons exemples d'utilisation du module Nodemailer sur http://www.nodemailer.com/ . Les instructions complètes sur la façon d'installer et d'utiliser les fonctionnalités de base de Nodemailer sont incluses dans ce lien.

J'ai personnellement eu du mal à installer Nodemailer en utilisant npm, donc je viens de télécharger la source. Il existe des instructions pour l'installation de npm et le téléchargement de la source.

Il s'agit d'un module très simple à utiliser et je le recommanderais à tous ceux qui souhaitent envoyer des e-mails à l'aide de Node.js. Bonne chance!

Eric Peterson
la source
2
nodemailer a d'abord fonctionné!
Capy
testé avec SMTP et Amazon SES, fonctionne pour moi, intégré dans le cadre ConnectedSets
Jean Vincent
simple, pas de travail acharné pour sa mise en place. vient de copier l'exemple de code, changé pour mes informations (lire sur SSL sécurisé) et ça a juste fonctionné. idéal pour l'expéditeur simple d'email!
C'est un projet commercial maintenant, alors soyez prévenu.
elliotrock
2
Cette réponse devrait inclure un exemple
Abraham TS
65

Découvrez emailjs

Après avoir perdu beaucoup de temps à essayer de faire fonctionner nodemailer avec de grandes pièces jointes, j'ai trouvé emailjs et heureux depuis.

Il prend en charge l'envoi de fichiers à l'aide d'objets de fichier normaux, et non d'énormes tampons, comme l'exige nodemailer. Signifie que vous pouvez le lier à, par exemple, formidable pour passer les pièces jointes d'un formulaire html à l'expéditeur. Il prend également en charge la mise en file d'attente ..

Dans l'ensemble, aucune idée pourquoi nodejitsu ppl a choisi nodemailer pour baser sa version, emailjs est juste beaucoup plus avancé.

silvio
la source
3
Après une utilisation prolongée, a dû le bifurquer pour résoudre un problème: à moins que dans le processus d'envoi de courrier, la chose ne traite pas les événements de socket, et donc bloquée après un certain temps d'inactivité, car le serveur fermait la connexion, mais là était rien pour traiter l'événement et réinitialiser les variables internes. Vous pouvez trouver la version fourchue ici: https://github.com/silvioster/emailjs . Cette version fonctionne de façon stable depuis assez longtemps maintenant, sans décrochage.
silvio
18
mise à jour du commentaire précédent, l'auteur original a corrigé ce bogue et quelques autres aussi, donc fork n'est plus nécessaire. la dernière version devrait être sur https://github.com/eleith/emailjs
silvio
1
nodemailer prend également en charge les flux de pièces jointes, non seulement les "énormes tampons"
JoshuaDavid
57

Code complet pour envoyer un e-mail à l'aide du module nodemailer

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "[email protected]",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <[email protected]>",
    to: "[email protected]",
    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();
});
Vicky
la source
4
J'ai trouvé Nodemailer beaucoup plus facile à utiliser que node-email-templates. C'est peut-être parce que j'essayais simplement d'envoyer des e-mails de base en texte clair / basique html, mais j'ai trouvé qu'il node-email-templatesfallait bien plus de configuration, alors qu'il Nodemailerétait opérationnel en littéralement 2 minutes.
JVG
4
Autre que gmail? Comment pouvons-nous configurer pour notre propre serveur smtp?
Balaji Boggaram Ramanarayan
1
Je reçois cette erreur après la compilation avec webpack: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. J'ai consulté des articles comme celui-ci , puis cette page, mais j'ai quand même perdu.
user1063287
2
@ user1063287 Supprimez simplement le paramètre "SMTP"
Bojan Radivojevic Bomber
1
Juste pour que vous le sachiez, vous ne pouvez pas changer l'adresse d'expéditeur en autre chose que votre propre adresse e-mail que vous avez utilisée comme authentification. Gmail force l'adresse d'expéditeur à celle-ci afin de pouvoir confirmer l'autorité de l'expéditeur.
Nicholas Mordecai
25

@ La réponse acceptée de JimBastard semble être datée, j'ai jeté un coup d'œil et cette mailer lib n'a pas été touchée depuis plus de 7 mois, a plusieurs bogues répertoriés et n'est plus enregistrée dans npm.

nodemailer ressemble certainement à la meilleure option, mais l'url fournie dans d'autres réponses sur ce fil est 404'ing.

nodemailer prétend prendre en charge des plugins faciles dans gmail, hotmail, etc. et possède également une très belle documentation.

Dean plutôt
la source
9

Vous pouvez toujours utiliser AlphaMail ( divulgation: je suis l'un des développeurs derrière ).

Installez simplement avec NPM :

npm install alphamail

Ouvrez un compte AlphaMail. Obtenez un jeton, puis vous pouvez commencer à envoyer avec le service 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", "[email protected]"))
    .setReceiver(new alphamail.EmailContact("John Doe", "[email protected]"))
    .setBodyObject(person) // Any serializable object
);

Et dans l'AlphaMail GUI ( Dashboard ), vous pourrez modifier le modèle avec les données que vous avez envoyées:

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

Les modèles sont écrits en Comlang , c'est un langage de modèle simple spécialement conçu pour les e-mails.

Robin Orheden
la source
12
Alphamail est maintenant officiellement mort. Très malheureux - j'ai commencé à l'utiliser exactement à cause de ce message. Souhaitant bonne chance aux développeurs dans leur prochaine aventure.
masotime
3

npm a quelques paquets, mais aucun n'a encore atteint 1.0. Les meilleurs choix parmi npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0
Ezku
la source
2

campagne est une solution complète pour l' envoi des e - mails dans le nœud, et il est livré avec une API très simple.

Vous l'installez comme ça.

var client = require('campaign')({
  from: '[email protected]'
});

Pour envoyer des e-mails, vous pouvez utiliser Mandrill , qui est gratuit et génial. Définissez simplement votre clé API, comme ceci:

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

(si vous souhaitez envoyer des e-mails via un autre fournisseur, consultez la documentation)

Ensuite, lorsque vous souhaitez envoyer un e-mail, vous pouvez le faire comme ceci:

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

Le dépôt GitHub a une documentation assez complète .

bevacqua
la source