2016-06-24 11 views
0

私は電子メールでHTMLを送信しようとしています。テストとエラーを避けるために、私はMailgun's email templatesを使用しています。Node.jsとMailgunを使用したHTMLの送信に問題があります

私は正常にメールを送信できますが、受け取ったときにHTMLがプレーンテキストとして表示されます。私はその文書に従っているので、私はどこで間違いを犯したのか分かりません。また、私はmailgun-jsmailcomposerを使ってこの目標を達成しています。

var htmlBody = path.join(__dirname, './emailTemplate/alert.html'); 

追加情報:私は解析サーバーでこれで 'クラウドコード' をやっている

function sendEmailNotif(name) { 

var mail = mailcomposer({ 
    from: process.env.MAIL_FROM_ADDRESS, 
    to: '********@*****.com', // My address, for testing purpose 
    subject: ' ****** ' + name +' ***** !', 
    text: '******* *****', 
    html: 'htmlBody should appear here' 
}); 

mail.build(function(mailBuildError, message) { 

var dataToSend = { 
    to: '*******@****.com', 
    message: fs.createReadStream(htmlBody) 
}; 

mailgun.messages().sendMime(dataToSend, function (sendError, body) { 
    if (sendError) { 
     console.log(sendError); 
     return; 
    } else { 
     console.log('Email sent ! ', + body); 
    } 
    }); 

}); 

また、私はこのようなHTMLを宣言しました。 A screenshot of the email I receive

私は私が間違ってやっているかわからないんだけど、なぜメールが... htmlとして送信されません。ここで

は、私が電子メールとして受信するものです。 ありがとうございます。

答えて

1

私はあなたがこれをしたいと思う:

function sendEmailNotif(name) { 
    fs.readFile(path.join(__dirname, './emailTemplate/alert.html'), function (err, htmlBody) { 
    var mail = mailcomposer({ 
     from: process.env.MAIL_FROM_ADDRESS, 
     to: '********@*****.com', // My address, for testing purpose 
     subject: ' ****** ' + name +' ***** !', 
     text: '******* *****', 
     html: htmlBody, 
    });  
    mail.build(function (mailBuildError, message) { 
     var dataToSend = { 
     to: '*******@****.com', 
     message: message.toString('ascii'), 
     }; 

     mailgun.messages().sendMime(dataToSend, function (sendError, body) { 
     if (sendError) { 
      console.log(sendError); 
      return; 
     } else { 
      console.log('Email sent ! ', + body); 
     } 
     }); 
    }); 
    }); 
} 

は説明:mail.buildは(messageパラメータで)正しいMIMEエンコードされたボディ、あなたのコールバックを送信しますので、あなたが実際にそれを使用する必要があります。 (あなたはだけでなく、ファイルから読み込むHTMLを使用していた。)私が作った修正は、次のとおりである。

  1. ファイルからHTMLを読み、mailcomposerを使用してメールを作成するときにhtmlフィールドにそれを置きます。
  2. 実際にはmail.buildの値を使用してください。

上記のコードはテストしていません。ちょうどmailgun-js documentationを読んでください。あらゆるタイプミスの謝罪!

+0

これはうまく動作し、はるかに意味があります。説明をありがとう。 – tsnkff

関連する問題