简体   繁体   English

如何在 Node JS 的 nodemailer 中包含 HTML 页面

[英]how to include an HTML page in nodemailer in Node JS

I want to send Html Page using nodemailer in Email.我想在电子邮件中使用 nodemailer 发送 Html 页面。 But I can't include my html page.但我不能包含我的 html 页面。 How can is this possible?这怎么可能? Please help and give me a solution...请帮助并给我一个解决方案...

This is my EmailSendHtml.js File这是我的 EmailSendHtml.js 文件

 var nodemailer=require('nodemailer');
 var fs=require('fs');

 var d;

 fs.readFile('index.html','UTF-8',function(err,data)
 {
     d=data;
 });

 var transporter=nodemailer.createTransport(
 {
 service:'gmail',
 auth:
 {
  user:'Me@gmail.com',
  pass:'********'
 }
 });

var a='<h1>Welcome</h1><p>That was easy!</p>';

 var mailOptions={
   from:'Me@gmail.com',
   to:'ToMyFriend@gmail.com',
   subject:'Sending HTML page using Node JS',
   html:d
 };

 transporter.sendMail(mailOptions,function(error,info)
 {
    if(error)
    {
        console.log(error);
    }
    else
    {
        console.log('Email Sent: '+info.response);
    }
 });

That's my html page which I want to include and show in email.这是我想要包含并显示在电子邮件中的 html 页面。

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link type="text/css" rel="stylesheet" href="style.css"/>
    </head>
    <body>
        <h1>TODO write content</h1>
    </body>
</html>

This is my style.css file这是我的 style.css 文件

/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/* 
    Created on : Feb 19, 2018, 2:03:50 PM
    Author     : Lenovo
*/

h1
{
    color:red;
}

Just change your code as following :只需更改您的代码如下:

var nodemailer=require('nodemailer');
var fs=require('fs');

require.extensions['.html'] = function (module, filename) {
    module.exports = fs.readFileSync(filename, 'utf8');
};

 var data = require('index.html'); // path to your HTML template

 var transporter=nodemailer.createTransport(
 {
 service:'gmail',
 auth:
 {
  user:'Me@gmail.com',
  pass:'********'
 }
 });

var a='<h1>Welcome</h1><p>That was easy!</p>';

 var mailOptions={
   from:'Me@gmail.com',
   to:'ToMyFriend@gmail.com',
   subject:'Sending HTML page using Node JS',
   html:data
 };

 transporter.sendMail(mailOptions,function(error,info)
 {
    if(error)
    {
        console.log(error);
    }
    else
    {
        console.log('Email Sent: '+info.response);
    }
 });
  • Use inline css in HTML and在 HTML 中使用内联 css 和
  • Use file read stream as below使用文件读取流如下
  • past the file read stream to sendmail // { html }将文件读取流传递给 sendmail // { html }
  • Don't forget to explicitly close the file stream不要忘记显式关闭文件流

Code sample代码示例

var htmlstream = fs.createReadStream("index.html");

transport.sendMail({ html: htmlstream }, function(err) {
    if (err) {
        // check if htmlstream is still open and close it to clean up
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM