You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用带认证代理的Nodemailer发邮件失败:Socks5连接被拒绝

解决Nodemailer通过Socks5代理发送邮件报错ConnectionRefused的问题

问题重现

使用带认证的Socks5代理时,Nodemailer发送邮件失败,报错:
Error: Socks5 proxy rejected connection - ConnectionRefused
不使用代理时邮件发送正常,相关代码如下:

const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true, // true для порта 465, false для других портов
    auth: {
        user: 'test@gmail.com',
        pass: 'zzxxcc'
    },
    proxy: 'socks://user:pass@138.59.1.1:5555'
});

transporter.set('proxy_socks_module', require('socks'));

let mailOptions = {
  from: "test@gmail.com",
  to: "priem@gmail.com",
  subject: "theme",
  text: "hi"
};

transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
        ended = error.message;
        resolve()
    } else {
        ended = 1;
        resolve()
    }
});

解决方案

  • 测试代理连通性
    先用命令行验证代理能否正常连接到目标SMTP服务器:

    curl --socks5 user:pass@138.59.1.1:5555 https://smtp.gmail.com:465
    

    如果命令返回连接失败,说明代理服务器本身不可用,联系提供商排查。

  • 校验代理认证信息
    确认代理的用户名、密码没有URL特殊字符(如@、:),如果有需进行URL编码。例如密码中的@要替换为%40。

  • 改用对象式代理配置
    避免字符串解析可能出现的问题,改用对象形式配置代理:

    let transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true,
        auth: {
            user: 'test@gmail.com',
            pass: 'zzxxcc'
        },
        proxy: {
            host: '138.59.1.1',
            port: 5555,
            auth: {
                user: 'user',
                pass: 'pass'
            },
            type: 'socks5'
        }
    });
    
  • 更新socks模块版本
    旧版本socks模块可能存在兼容性问题,重新安装最新稳定版:

    npm uninstall socks
    npm install socks@latest
    
  • 确认代理端口权限
    检查代理服务器是否允许访问SMTP端口(465),部分代理会限制特定端口的出站连接,需要联系代理提供商开启权限。

内容的提问来源于stack exchange,提问作者Anna Ermilova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:17:16