Javascript NodeEmailer:当密码字符串包含'#';
我在nodejs中有一个应用程序,它使用nodeEmailer发送电子邮件。除了密码字符串中包含“#”外,其他一切都正常工作 下面是我的代码Javascript NodeEmailer:当密码字符串包含'#';,javascript,node.js,email,nodemailer,Javascript,Node.js,Email,Nodemailer,我在nodejs中有一个应用程序,它使用nodeEmailer发送电子邮件。除了密码字符串中包含“#”外,其他一切都正常工作 下面是我的代码 var secure = config.secure ? "smtps":"smtp"; var conURL = secure+"://"+config.user+":"+config.pass+"@"+config.host+"/?pool=false"; try { const transport = nodemailer.createTr
var secure = config.secure ? "smtps":"smtp";
var conURL = secure+"://"+config.user+":"+config.pass+"@"+config.host+"/?pool=false";
try {
const transport = nodemailer.createTransport(conURL);
// verify connection configuration
transport.verify(function(error, success) {
if (error) {
console.log(error.message) // Error : Connection Timeout
}
});
当密码包含“#”字符时,我收到一个连接超时错误。我用@、!、$等等,一切正常
有人能帮上忙吗?您可能需要对URI进行编码 所以,我想像这样的东西应该会起作用
secure+"://"+config.user+":"+encodeURIComponent(config.pass)+"@"+config.host+"/?pool=false"
编辑:尝试使用配置对象而不是像这样的URI
const config = {
pool: false,
host: config.host,
secure: config.secure,
auth: {
user: config.user,
pass: config.pass
}
};
try {
const transport = nodemailer.createTransport(conURL);
// verify connection configuration
transport.verify(function(error, success) {
if (error) {
console.log(error.message) // Error : Connection Timeout
}
});
当我只对密码字段进行编码时,它似乎可以工作。我将在测试后更新一些其他特殊的字符,也就是ooops。。。事实上,这是正确的。我的错。您只需在密码上使用encodeURIComponent。这两种解决方案都有帮助吗?让我们来看看。