2012-04-25 4 views
3

J'essaie d'utiliser Gmail smtp en utilisant node_mailer. Je reçois une erreur de suivi sur mes journaux nodejs (en utilisant nodester). Voici mon code:Impossible d'utiliser gmail SMTP

var email = require('mailer'); 
email.send({ 
    host : "smtp.gmail.com",    
    port : "465",      
    ssl : true, 
    domain : "domain.com",    
    to : "[email protected]", 
    from : "[email protected]", 
    subject : "You have been registered", 
    body: "<B>Hello! This is a test of the node_mailer.</B>", 
    authentication : "login",  // auth login is supported; anything else is no auth 
    username : /* username */, 
    password : /* password */  
    }, 
    function(err, result){ 
     if(err){ self.now.error(err); console.log(err); return;} 
     else this.now.successfullySent(result); 
}); 

Je ne reçois aucune erreur dans la pile mais les e-mails ne sont pas distribués.

@ work4liberty et @David Ellis. Merci pour vos deux entrées mais il semble que le problème n'était pas avec mon code serveur, j'envoyais une valeur incorrecte dans emailId de mon javascript côté client. Nodemailer m'a aidé à déboguer le problème avec le texte correct par erreur.

+0

S'il vous plaît indenter votre code correctement – ThiefMaster

Répondre

6

Un couple de choses:

  1. Votre code écrit comme jetteront une erreur d'interprétation et ne fonctionne pas. (Pas de guillemets autour d'une adresse e-mail, par exemple.)
  2. Cette bibliothèque n'a pas été mise à jour depuis longtemps. Je recommande fortement la bibliothèque Nodemailer, développée activement et nommée de la même façon, qui a un raccourci pour les services communs tels que le SMTP de Gmail.

Full Disclosure: I ont contribué la fonctionnalité SES à Amazon Nodemailer (si une réécriture récente de l'architecture sous-jacente de 0.1.x à 0.3.x signifie que je ne montre pas sur git blame, plus).

EDIT: J'ai regardé de plus près votre code. En supposant que vous n'avez pas les fautes de frappe dans votre code actuel, je soupçonne que la ligne suivante est le coupable: this.now.successfullySent(result);

Fondamentalement, la this de fonction de rappel est pas ce que vous pensez qu'il est. Vous devez mettre en cache l'objet this dans sa portée en l'affectant à une variable telle que self. (En supposant que nous ne sommes pas face à un problème dans la bibliothèque sous-jacente.)

+0

je accidentellement supprimé des citations de partout adresse e-mail tout en poster ici, je l'ai corrigé. J'ai aussi caché 'this' dans' self'. Mais ce n'est pas le problème. Je n'arrive toujours pas à envoyer de courrier. Bon point cependant que cette bibliothèque n'a pas été mise à jour depuis 7 mois. Je vais essayer nodemailer. –

3

Remplacement du xxx avec mon mot de passe ce code fonctionne pour moi copier et coller cela et voir comment cela fonctionne si elle dose ne fonctionnera pas pour vous peut-être il est lag juste sorcière arrive de temps en temps ou (je l'espère) votre adresse IP ou quelque chose dans votre msg faire gmail pensent qu'il était le spam

var email = require('mailer'); 
email.send({ 
    host : "smtp.gmail.com", 
    port : "465", 
    ssl : true, 
    domain : "domain.com", 
    to : "[email protected]", 
    from : "[email protected]", 
    subject : "You have been registered", 
    body: "<B>Hello! This is a test of the node_mailer.</B>", 
    authentication : "login",  // auth login is supported; anything else $ 
    username : '[email protected]', 
    password : 'xxx' 
    }, 
    function(err, result){ 
     if(err){ self.now.error(err); console.log(err); return;} 
     else console.log('looks good') 
}); 
+0

Mon code est exactement semblable au vôtre. Je n'arrive toujours pas à envoyer de courrier. Cela peut être dû au fait que mon application est déployée sur nodester, des réflexions à ce sujet? –

+0

heh. Vous pouvez essayer Nodemailer comme suggéré que c'est ce que j'utilise normalement. Si vous pouvez trouver l'adresse IP, vous pouvez vérifier les bases de données anti-spam ou peut-être même demander à Gmail directement si elles bloquent d'une manière ou d'une autre. Peut-être que vous pourriez demander à nodester si elles sont bloquées par gmail ou si elles bloquent d'une manière ou d'une autre. – work4liberty

+0

En fait, j'ai essayé les deux et maintenant les deux fonctionnent. Le problème était avec mon script côté client. Je ne cherchais pas l'identifiant de l'email correctement, Duh! Qu'est ce que c'est stupide de ma part. J'ai écrit ceci dans ma question. –