簡體   English   中英

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
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM