3

を使用してgmailsmtpを使用しようとしていますnode_mailer。nodejsログで次のエラーが発生します(nodesterを使用)。これが私のコードです:

var email = require('mailer');
email.send({
    host : "smtp.gmail.com",              
    port : "465",                     
    ssl : true,
    domain : "domain.com",            
    to : "emailId@gmail.com",
    from : "email@gmail.com",
    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);
});

スタックでエラーが発生していませんが、メールが配信されていません。

@work4libertyと@DavidEllis。両方の入力に感謝しますが、問題はサーバーコードにあるのではないようです。クライアント側のJavaScriptから、emailIdに誤った値を送信していました。Nodemailerエラーのある正しいテキストで問題をデバッグするのに役立ちました。

4

2 に答える 2

6

いくつかのこと:

  1. 記述されたコードはインタープリターエラーをスローし、実行されません。(たとえば、電子メールアドレスを引用符で囲むことはできません。)
  2. そのライブラリはしばらく更新されていません。GmailのSMTPなどの一般的なサービスの省略形を持つ活発に開発された同様の名前のNodemailerライブラリを強くお勧めします。

完全開示: Amazon SES機能をNodemailerに提供しました(ただし、基盤となるアーキテクチャが最近0.1.xから0.3.xに書き直されたため、表示されなくなりましたgit blame)。

編集:私はあなたのコードを詳しく調べました。実際のコードにタイプミスがないと仮定すると、次の行が原因であると思われます。this.now.successfullySent(result);

基本的に、コールバック関数thisはあなたが思っているものではありません。thisオブジェクトをのような変数に割り当てることにより、オブジェクトをそのスコープにキャッシュすることができますself。(基礎となるライブラリーの問題を扱っていないと仮定します。)

于 2012-04-25T19:58:47.813 に答える
2

xxxを私のパスワードに置き換えるこのコードは私のために機能しますそれをコピーして貼り付け、それがあなたのために機能しない場合にそれがどのように機能するかを見てくださいmsgは、Gmailにスパムだと思わせる

var email = require('mailer');
email.send({
    host : "smtp.gmail.com",
    port : "465",
    ssl : true,
    domain : "domain.com",
    to : "work4liberty@gmail.com",
    from : "work4liberty@gmail.com",
    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 : 'work4liberty@gmail.com',
    password : 'xxx'
    },
    function(err, result){
      if(err){ self.now.error(err); console.log(err); return;}
      else console.log('looks good')
});
于 2012-04-25T20:03:10.650 に答える