curl 邮件协议一条命令速成:SMTP 发信、POP3 收信、IMAP 管邮箱
发布时间:2026/8/31 7:54:17 作者:尧图编辑部 阅读量:1,286

curl 邮件协议一条命令速成SMTP 发信、POP3 收信、IMAP 管邮箱【免费下载链接】curlA command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features项目地址: https://gitcode.com/GitHub_Trending/cu/curl你想在服务器上发邮件或者用脚本把收件箱内容拉下来不必打开网页邮箱。curl 原生支持邮件协议SMTP 负责发信POP3 负责收信IMAP 负责远程管理。把下文命令里的占位符换成你的真实值一条命令就能收发邮件。三个协议各干什么活先花 30 秒对号入座你想做的事该用的协议明文端口加密端口一句话分工发邮件SMTP25587 也常见465只管寄出去收邮件、存到本地POP3110995把邮件从服务器搬走远程看、搜、管邮件IMAP143993邮件留在服务器多设备同步端口和 URL 写法的完整定义见 docs/URL-SYNTAX.md支持的协议清单见 docs/FEATURES.md。任务一发出第一封邮件目标效果让收件箱里多出一封带主题的邮件。先准备一个mail.txt第一行起是头部To:、From:、Subject:各占一行空一行之后是正文这是 RFC 5322 的标准格式。下面的命令通过 587 端口登录 SMTP 服务器把mail.txt作为邮件内容发出去# 587 端口走 STARTTLS 登录发信--upload-file 指定邮件内容 curl smtp://SMTP服务器:587 \ --user 用户名:密码 \ --mail-from 发件邮箱 \ --mail-rcpt 收件邮箱 \ --upload-file mail.txt跑完后终端没有任何输出。没有输出就是成功去收件箱看看你应该能看到那封邮件。不想写文件也行--upload-file -表示从标准输入读邮件内容可以配合echo直接拼出来。想给多个收件人就重复写多次--mail-rcpt。任务二把服务器邮件拉到本地目标效果先看邮箱里有多少封再挑一封下载最后把整个邮箱存档。这三条命令分别做统计、取单封、全量下载# 只看服务器统计信息多少封、总字节数 curl pop3s://POP3服务器 --user 用户名:密码 -s -I # 下载第 1 封邮件到 message1.eml curl pop3s://POP3服务器/1 --user 用户名:密码 -o message1.eml # 全量下载整个邮箱到 inbox.mbox curl pop3s://POP3服务器 --user 用户名:密码 -o inbox.mbox第一条你应该看到类似1 15432的输出1 封邮件共 15432 字节。⚠️ 注意 POP3 的语义curl 下载完成后默认会把邮件从服务器删掉。它是搬走不是复制。所以第三条全量命令要谨慎建议先跑第一条确认数量并且只在确实要清空的场景执行。想下载但留在服务器请改用下一节的 IMAP。任务三远程管理邮箱目标效果不下载任何邮件只远程列出文件夹、选中某个文件夹、查出未读邮件的编号。IMAP 用-X发送原始 IMAP 命令。这三条命令依次完成看目录、选文件夹、搜未读# 列出邮箱里的所有文件夹 curl imaps://IMAP服务器 --user 用户名:密码 -X LIST * # 选中 INBOX 文件夹并查看它的状态邮件数等 curl imaps://IMAP服务器/INBOX --user 用户名:密码 -X EXAMINE INBOX # 搜索未读邮件返回未读邮件的编号列表 curl imaps://IMAP服务器/INBOX --user 用户名:密码 -X SEARCH UNSEEN第一条你应该看到一行行文件夹路径INBOX、Sent、Drafts之类。拿到未读编号后取某封邮件正文只要把编号写进 URL 路径imaps://IMAP服务器/INBOX/;UID编号内容直接打印到终端。仓库里每个操作都有对应示例源码比如 imap-list.c、imap-search.c目录在 docs/examples/可以对照学习。避坑问答你遇到的现象大概率原因怎么处理连接被拒、Connection refused端口不通或服务器禁用了明文端口换加密端口 465 / 995 / 993或 587 加--ssl加-v看卡在哪一步登录被拒535/Login denied缺--user或该服务商要求授权码检查凭据QQ、163 等常用邮箱要用客户端授权码而非登录密码证书报错SSL connect errorCA 链不全或公司网络做了中间人用--cacert CA文件指定受信根证书别随手用-k关闭校验一直转圈最后Operation timed out连接慢或网络被拦加--connect-timeout 10快速失败换网络或换端口再试命令跑完没反应成功了。curl 静默即成功这是正常行为想确认就加-v看协议交互过程IMAP 命令返回报错BAD-X里的命令拼写或引号不对对照 docs/examples/ 里的示例命令逐字检查安全底线明文端口25/110/143上你的用户名密码裸奔生产环境别用。两种加密方式的区别就一句话隐式 TLS 是连上就加密STARTTLS 是连上后协商升级成加密。这两条命令把两种方式都演示了且都显式指定了信任的 CA 证书# 隐式 TLSsmtps:// 直连 465 端口握手即加密 curl smtps://SMTP服务器:465 --user 用户名:密码 \ --mail-from 发件邮箱 --mail-rcpt 收件邮箱 --upload-file mail.txt \ --cacert /path/to/ca-bundle.pem # STARTTLS连 587 明文端口--ssl 触发升级加密 curl smtp://SMTP服务器:587 --ssl --user 用户名:密码 \ --mail-from 发件邮箱 --mail-rcpt 收件邮箱 --upload-file mail.txt证书校验 curl 默认开启只有在校验确实失败且你确认原因时才考虑--cacert换根证书-k是最后的下策。收尾速查表任务协议明文端口加密端口一条典型 curl 命令发信SMTP25 / 587465curl smtp://服务器:587 --user 用户名:密码 --mail-from 发件邮箱 --mail-rcpt 收件邮箱 --upload-file mail.txt收信POP3110995curl pop3s://服务器 --user 用户名:密码 -o inbox.mbox管邮箱IMAP143993curl imaps://服务器/INBOX --user 用户名:密码 -X SEARCH UNSEEN记住三件事发信找 SMTP收件找 POP3会删服务器副本管理找 IMAP能上加密端口就上加密端口静默输出就是好消息。更多协议细节可翻 docs/URL-SYNTAX.md邮件书写规范见 docs/MAIL-ETIQUETTE.md。【免费下载链接】curlA command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features项目地址: https://gitcode.com/GitHub_Trending/cu/curl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考