Nodemailer:密码字符串包含“#”时出现连接超时错误
Nodemailer: Connection Timeout error when password string contains '#'
我在 nodejs 中有一个应用程序,它使用 nodemailer 发送电子邮件。一切正常,除非密码字符串中包含“#”。
下面是我的代码
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
}
});
我在 nodejs 中有一个应用程序,它使用 nodemailer 发送电子邮件。一切正常,除非密码字符串中包含“#”。
下面是我的代码
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
}
});