Nodemailer 不发送带有换行符的文本

Nodemailer does not send the text with line breaks

我正在使用 Nodemailer,这是一个用于发送邮件的 NodeJS 模块。但是,它不会发送带有换行符的邮件,但我已尝试打印出包含我要发送的文本的变量,并且有换行符。

我得到我在文本区写的文字:

site.js:

$("#send-mail").click(function(){
    $.post("/sendMail",{fieldHeader: $('#field-header').val()}, function(data){
        window.location.href ="/";
    });
});

server.js:

app.post('/sendMail', function(req, res) {
    mailSender.init(req.body.fieldHeader);
});

mailSender.js

function init(fieldHeader) {
    console.log(fieldHeader);
    if(fieldHeader!=null) {
        var mailer = require("nodemailer");

        var smtpTransport = mailer.createTransport({
            host: "smtp.gmail.com",
            service: "Gmail",
            tls:{
                rejectUnauthorized: false
            },
            auth: {
                user: "...",
                pass: "..."
            }
        });

        var mail = {
            from: "...",
            to: "...",
            subject: "Send Email Using Node.js",
            text: "Node.js New world for me",
            html: fieldHeader
        }

        smtpTransport.sendMail(mail, function(error, response){
            if(error){
                console.log(error);
            }else{
                console.log("Message sent: " + response.message);
            }

            smtpTransport.close();
        });
    }
}
module.exports.init = init;

正如我所说,我打印出包含我想在邮件中发送的文本的变量(它是您在 mailSender.js 开头看到的 console.log())和这个结果是:

但是收到的邮件,不包含任何换行符:

我一直在考虑用 <br> 替换换行符,使用一个循环来查看和检查文本中的每个字符,但我不确定这是否是个好主意。

尝试在需要换行的地方添加换行标记。 <br><br />

var fieldheader = `hi <br> how are you ? <br> this is testing <br>`
var mail = {
    from: "...",
    to: "...",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: fieldHeader
}

它将解决您的问题。

只需将 \n 放在需要换行的地方即可。