2016-09-20 4 views
2

私が遭遇した問題は、添付ファイルまたはテンプレートデータを含むメールのみを送信できますが、両方を送信する方法が見つかりませんでした。nodemailerを使用して添付ファイルとhtmlデータを使ってメールを送信する

はここに私のコードです:私はそれを上に示した方法を行う場合

var EmailTemplate = require('email-templates').EmailTemplate; 
var template = new EmailTemplate('templates/welcome'); 
template.render({}, function(err, results) { 
    var send = transporter.templateSender({ 
    from: '<[email protected]>', 
    html: results.html, 
    attachments: [{ 
     filename: 'file1.png', 
     path: 'templates/file1.png', 
     cid: 'file1' 
    }, { 
     filename: 'file2.png', 
     path: 'templates/file2.png', 
     cid: 'file2' 
    }] 
    }); 

    send({ 
    to: String(user.emailAddress), 
    subject: 'Welcome to the Our Site!' 
    }, {name: user.firstName}, callback); 
}); 

、名前のテンプレート変数をレンダリングするが、画像は表示されません。私が代わりに行う場合、

var send = transporter.templateSender(template, ... 

添付ファイルはレンダリングされ、テンプレート変数はレンダリングされません。

この種のもののためにJadeやHandlebarsのようなテンプレートパッケージを使うことができると知っていますが、nodemailerが必要とする機能をすべて備えていると思われます。

ご協力いただければ幸いです。 ありがとう!

答えて

1

私はまったく同じことをしていましたが、Go LIVEの直前にこれを解決するために貴重な4時間を無駄にしました。しかし、ついにこれに答えました。

添付ファイルを維持するための場所ではなくtemplateSender()よりsend()一部であるので、コードは次のようになります。

send({ 
    to: String(user.emailAddress), 
    subject: 'Welcome to the Our Site!', 
    attachments:[{ 
     filename: 'file1.png', 
     path: 'templates/file1.png', 
     cid: 'file1' 
    }, { 
     filename: 'file2.png', 
     path: 'templates/file2.png', 
     cid: 'file2' 
    }] 
    }, {name: user.firstName}, callback); 

は、それが誰かを役に立てば幸い!

+0

ありがとう、これは本当に私の神経に乗っていた。今私はついに添付画像を見ることができます。バッファからimgタグに実際に埋め込む方法を今すぐ理解する必要があります。それをどうやって行うのか分かりますか? – AdelaN

+0

@AdelaN、そのバッファをbase64に変換してimgタグ – roneo

+1

に渡すことができます。最終的にうまくいったのは、コンテンツ識別子が 'src32'のコンテンツIDです。つまり、 '' ... – AdelaN

関連する問題