web-dev-qa-db-fra.com

Comment changer le champ "from" dans nodemailer?

Avertissement: je ne suis pas très bon avec les aspects techniques de l'email.

J'ai donc mis en place un compte gratuit zoho mail qui est simplement un serveur de messagerie pour mon domaine. Cela fonctionne un peu via le transfert d'enregistrement MX ou quelque chose comme ça, je ne sais pas trop comment cela fonctionne.

Quoi qu'il en soit, le point est le suivant: je peux facilement changer le champ from lorsque j'utilise mon compte par Outlook. Ainsi, mon adresse e-mail [email protected] Apparaît comme Foo from bar.com Dans la plupart des clients de messagerie.

Maintenant, je veux envoyer des e-mails automatisés depuis mon compte [email protected] Avec nodemailer (v1.10.0) via SMTP avec SSL. J'ai essayé différentes approches que j'ai trouvées dans la documentation/sur Internet. Tous ont juste jeté une trace de pile ambigüe (voir ci-dessous).

Dès que j'arrête d'essayer de changer le champ from, tout fonctionne bien (sauf le mauvais du champ). Comme je n'ai aucune idée de ce qui se passe, je demande de l'aide pour résoudre ce problème.

J'ai essayé de changer le deuxième argument de createTransport() en mon champ désiré. N'a pas marché.

nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user});

à

nodemailer.createTransport(auth.mail, {from: 'Foo from bar.com'});

J'ai essayé de configurer auth.mail.from, Ce qui n'a pas fonctionné non plus. Et j'ai essayé de régler auth.mail.from En passant un 2ème paramètre à createTransport().


Mon code

var nodemailer = require('nodemailer');
var auth = { mail: { Host: 'smtp.zoho.com', port: 465, secure: true, auth: { user: '[email protected]', pass: 'strongpassword' } };
var log = require('./log');

var transporter = nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user});

function sendText(settings,cb) {
    transporter.sendMail(settings, function (err, info) {
        if (err) {
            log.warn('Failed to send an Email', err);
        } else {
            log.info('Successfully sent email', info);
        }
        if (cb) {
            cb(err, info);
        }
    });
}

Voici le stacktrace dont j'ai déjà parlé

Message failed
    at SMTPConnection._formatError (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:388:15)
    at SMTPConnection._actionStream (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:948:30)
    at SMTPConnection.<anonymous> (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:579:14)
    at SMTPConnection._processResponse (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:511:16)
    at SMTPConnection._onData (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:357:10)
    at emitOne (events.js:77:13)
    at TLSSocket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at TLSSocket.Readable.Push (_stream_readable.js:110:10)
    at TLSWrap.onread (net.js:523:20)
20
boop

Le champ from doit être au format Display Name <[email protected]>

transporter.sendMail({ ..., from: 'Foo from @bar.com <[email protected]>' });
23
boop

J'ai eu le même problème avec le from: field et je suis retourné lire la configuration de gmail et c'est ce que j'ai trouvé - comme je l'ai dit, seulement GMAIL. Je n'ai pas encore essayé un autre fournisseur.
src: nodemailer.com/usage/using-gmail/
Client: Gmail

Gmail définit également toujours le nom d'utilisateur authentifié comme adresse de messagerie de:. Donc, si vous vous authentifiez en tant que [email protected] et définissez [email protected] en tant que l'adresse from:, Gmail annule cela et remplace l'expéditeur par l'utilisateur authentifié.

en gros, vous ne pouvez spécifier l'utilisateur authentifié que sur le from: champ

merci, si je me trompe, faites le moi savoir

9
Vic B-A

Le premier exemple que vous pouvez consulter nodemailer.com site Web.

var nodemailer = require('nodemailer');

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:[email protected]');
/*set from user in option*/
var mailOptions = {
    from: 'Fred Foo ???? <[email protected]>', // sender address
    to: '[email protected], [email protected]', // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world ????', // plaintext body
    html: '<b>Hello world ????</b>' // html body
};

transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log('Message sent: ' + info.response);
});
5
xdeepakv