web-dev-qa-db-fra.com

Envoi d'emails dans Node.js?

J'ai récemment commencé à programmer mon premier node.js. Cependant, j'ai découvert que je ne parvenais pas à créer un formulaire de contact qui m'envoie directement à mon courrier électronique car je ne trouve aucun module de noeud capable d'envoyer des courriers électroniques.

Est-ce que quelqu'un connaît une bibliothèque de courrier électronique node.js ou un exemple de script de formulaire de contact?

274
NycCompSci

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

il a aussi un support pour windows

137
JimBastard

Nodemailer est essentiellement un module qui vous permet d'envoyer facilement des courriels lors de la programmation dans Node.js. Il existe d'excellents exemples d'utilisation du module Nodemailer à l'adresse http://www.nodemailer.com/ . Ce lien contient les instructions complètes sur l’installation et l’utilisation des fonctionnalités de base de Nodemailer.

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

C'est un module très simple à utiliser et je le recommande à tous ceux qui souhaitent envoyer des courriels à l'aide de Node.js. Bonne chance!

157
Eric Peterson

Départ emailjs

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

Il prend en charge l’envoi de fichiers à l’aide d’objets File normaux, et non d’énormes tampons requis par nodemailer. Cela signifie que vous pouvez le lier, par exemple, à un formidable moyen de transmettre les pièces jointes d’un formulaire HTML à l’éditeur de courrier. Il prend également en charge la file d'attente.

Dans l'ensemble, vous ne savez pas pourquoi nodejitsu ppl a choisi nodemailer pour baser sa version, emailjs est bien plus avancé.

64
silvio

Code complet pour envoyer un courrier électronique à l'aide de nodemailer Module

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();
});
50
Vicky

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

nodemailer ressemble certainement à la meilleure option, mais les URL fournies dans les autres réponses sur ce fil sont toutes en 404.

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

25
Dean Rather

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

Il suffit d'installer avec NPM :

npm install alphamail

Inscrivez-vous pour un compte AlphaMail. Obtenez un jeton et vous pourrez alors 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'interface graphique d'AlphaMail ( Tableau de bord ), 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 emails.

9
Robin Orheden

Mature, simple à utiliser et possède de nombreuses fonctionnalités, si simples ne sont pas assez: Nodemailer: https://github.com/andris9/nodemailer (note URL correcte!)

8

Nodemailer Module est le moyen le plus simple d'envoyer des emails dans node.js.

Essayez cet exemple de formulaire: http://www.tutorialindustry.com/nodejs-mail-tutorial-using-nodemailer-module

Informations supplémentaires: http://www.nodemailer.com/

6
aacharya_vaddey

npm a quelques paquets, mais aucun n'a encore atteint la version 1.0. Meilleurs choix de npm list mail:

[email protected]
[email protected]
[email protected]
3
Ezku

Vous voulez absolument utiliser https://github.com/niftylettuce/node-email-templates car il prend en charge nodemailer/postmarkapp et possède une belle prise en charge des modèles de courrier électronique asynchrone.

3
Some dude

campaign est une solution complète pour l'envoi d'e-mails en nœud. Elle est fournie avec une API très simple.

Vous en avez un exemple comme ça.

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

Pour envoyer des emails, vous pouvez utiliser Mandrill , qui est gratuit et génial. Il suffit de définir votre clé API, comme ceci:

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

(si vous voulez envoyer des emails en utilisant un autre fournisseur, vérifiez la documentation)

Ensuite, lorsque vous voulez envoyer un email, 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 documentation assez complète .

2
bevacqua