2017-07-11 7 views
0

Nodeメーラーを使用して電子メールを送信しようとしています。私のセットアップは以下の通りです。受取人はMongooseモデルから来ます。 Model Rentals.createdbyemailには、ユーザーの電子メールアドレスが含まれています。私は、メールアドレスがRentals.createdbyemailに含まれていることを確認するために二重チェックしました。このコードは、私はエラーを取得する実行し、いくつかの理由でNodeMailer - 受信者定義エラーなし

Error: No recipients defined 

どのように私はこのエラーを修正するために私のコードを変更するのでしょうか?助けてくれてありがとう!
注:「to」フィールドのメールアドレスを入力するだけで動作します。

var smtpTrans = nodemailer.createTransport({ 
     service: 'Gmail', 
     auth: { 
      user: '[email protected]', 
      pass: 'password' 
     } 
     }); 
     var mailOptions = { 
     to: Rentals.createdbyemail, 
     from: 'email', 
     subject: 'subject', 
     text: 'This is the email content' 
     }; 
     smtpTrans.sendMail(mailOptions, function(err) { 
     console.log('email sent') 

     if (err){ 
     console.log(err) 
     } 
     }); 

受信者は、マングースモデルから来ている:あなたのコードで

var rentalsSchema = new mongoose.Schema({ 
    reserved: {type: Boolean, default: false}, 
    createdby: String, 
    createdbyemail: String, 
    reservedby: String, 
    reservedemail: String, 
    author: { 
     id:{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "User" 
     }, 
     username: String, 
     email: String 
    }, 

module.exports = mongoose.model("Rentals", rentalsSchema); 

答えて

1

は、受信者の電子メールを割り当てることが欠けているあなたが割り当てることが有効な方法ではないRentals.createdbyemailを使用しているため。したがって、データベースからcreatedbyemailを取得して、リトリーブ電子メールを使用する必要があります。

メールをどこに送信したいのか分かりません(どの機能か、データベースからの取得方法を意味します)。ので、私は次のようにメール

を取得して送信する方法を示しています:

Rentalsテーブル

// {field: value} to get specific Rental 
Rentals.findOne({field: value}, function(err, rental) { 
if(rental) { 
    var smtpTrans = nodemailer.createTransport({ 
     service: 'Gmail', 
     auth: { 
      user: '[email protected]', 
      pass: 'password' 
     } 
     }); 
     var mailOptions = { 
     to: rental.createdbyemail, 
     from: 'email', 
     subject: 'subject', 
     text: 'This is the email content' 
     }; 
     smtpTrans.sendMail(mailOptions, function(err) { 
     console.log('email sent') 

     if (err){ 
     console.log(err) 
     } else { 
      return from here 
     } 
     }); 
} 
}); 
+0

からのメールを取得するありがとう!これはトリックでした。私はEJSを使ってページの電子メールを取得しました。それからfindOne({createdbyemail:req.body.createdbyemail}、 – AndrewLeonardi

関連する問題