【问题标题】:Nodemailer does not send the text with line breaksNodemailer 不发送带有换行符的文本
【发布时间】:2019-10-16 11:30:05
【问题描述】:

我正在使用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> 替换换行符,使用循环来查看和检查文本中的每个字符,但我不确定这是否是个好主意。

【问题讨论】:

  • 也许可以试试 $('#field-header').html() 而不是 .val()
  • 我尝试过使用 .hml(),但显然它只能通过 .val() 获得价值。但我已经设法解决了。我在 html 属性中发送文本,但我删除了它,而是将它放在 text 属性中,它现在可以工作了。还是谢谢。

标签: javascript node.js nodemailer


【解决方案1】:

尝试在需要换行符的位置添加换行符。 <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
}

它会解决你的问题。

【讨论】:

  • 是的,但我不能使用它,因为fileheader 是一个包含我在 textarea 字段中写入的文本的变量。所以它并不总是具有相同的值。还是谢谢。
  • 那么最好使用ckediter而不是简单的文本编辑器。因为在ckeditor中你会得到html格式的数据,所以它会为你工作。
  • 我一直在寻找ckeditor,但我设法更轻松地解决了我的问题。我在 html 属性中发送文本,但我删除了它并将其放入 text 属性中,现在它可以工作了。还是谢谢。
  • 欢迎。很乐意帮助你。 @AdriánT95
  • 是的,这可行,但这不是 HTML 换行符,如果我们想要纯文本换行符怎么办,即在行中:text: "Node.js New world \n for me"。这行不通,还是行不通?
【解决方案2】:

只需将\n 放在您想要换行的位置即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多