当 ImapFlow 需要通过 HTTP CONNECT 代理访问 IMAP 服务器时,请在邮箱设置旁一并添加 proxy:

import { ImapFlow } from 'imapflow';

const client = new ImapFlow({
  host: 'imap.example',
  port: 993,
  secure: true,
  auth: mailboxCredentials,
  proxy: 'http://proxy.example:8080',
});

mailboxCredentials 保存应用的 IMAP 账户。用这个客户端完成现有的连接、邮箱操作以及退出或失败后的清理流程。对于允许公共中间服务的公开邮件服务,HTTP 代理列表 提供不带代理凭据的代理 URL 候选;请检查能否访问真正的 IMAP 主机和端口。

两个值得核对的细节

  • 隧道端口是 993。 代理必须放行到 imap.example:993 的 CONNECT。只允许 443 端口网站隧道的中间服务,即便代理凭据有效也可能拒绝该请求。
  • 邮箱仍受 TLS 保护。 secure: true 作用于邮箱连接。代理 URL 的 http 方案标示中间服务的监听端,并不替代 IMAP 主机名。

如果中间服务需要登录,请按 ImapFlow 支持的代理 URL 格式提供其账户。邮箱账户仍留在 auth 中。本例使用标准 Node 代理路径;ImapFlow 的自定义 runtime 传输不能与 proxy 同时使用。

相关文章