linux shell发送Email邮件的方法详解
发布时间 - 2026-01-10 22:46:11 点击率:次一封最简单的邮件
echo -e "To: handy1989@qq.com\nCC: handy1989@qq.com\nFrom: handy<handy@test.com>\nSubject: test\n\nhello world" | sendmail -t
看上去有点复杂,其实就是sendmail程序从标准输入读取邮件源码,-t参数表示从邮件源码提取收件人信息,然后发送到收件人的邮件服务器,我们稍做整理,将邮件源码保存在email.txt中如下
To: handy1989@qq.com CC: handy1989@qq.com From: handy<handy@test.com> Subject: test hello world
将以上命令改为cat email.txt | sendmail -t,这样就一目了然了。收到的邮件信息如下
邮件的格式
从前面的邮件源码可以看到,邮件是和http类似的文本协议,由邮件头和邮件内容两部分组成,中间以空行分隔,邮件头每行对应一个字段,和http头类似,比如这里的To,CC,From,Subject,分别代表收件人,抄送人,发件人,标题,如果有多个收件人或抄送人,用逗号分隔,邮件内容才是我们在邮件客户端真正看到的东西
邮件客户端都可以查看邮件源码,比如下面就是我收到的一封邮件的源码
邮件标题使用中文
如果邮件标题直接使用中文字符会导致收到的邮件乱码,为了避免这种情况,应该对中文进行base64编码,而这也是邮件最常用的编码方式,当然,在进行base64编码之前先得对中文字符进行编码(UTF-8或GBK等等),这和html的编码是一样的概念,采用UTF-8和base64编码的格式如下
=?UTF-8?B?xxxxxx?=
其中xxxxxx为编码后的数据,用python可以快速对中文进行编码,比如对中文'测试'先进行utf-8编码再进行base64编码结果为
>>> import base64
>>> base64.standard_b64encode(u'测试'.encode('utf-8'))
'5rWL6K+V'
在From和Subject中使用中文,邮件源码如下
To: handy1989@qq.com CC: handy1989@qq.com From: =?UTF-8?B?5rWL6K+V?=<handy@test.com> Subject: =?UTF-8?B?5rWL6K+V?= hello world
这里将发件人的名字和邮件标题都改为了'测试',收到的邮件效果为
邮件内容使用html
如果邮件内容是html代码,则需要在邮件头添加Content-type字段来标记文本类型,同时还需要标记邮件内容的字符编码,以下邮件源码发送的正是html内容
To: handy1989@qq.com CC: handy1989@qq.com From: =?UTF-8?B?5rWL6K+V?=<handy@test.com> Subject: =?UTF-8?B?5rWL6K+V?= Content-type: text/html;charset=utf-8 <h1>hello world</h1>
收到的邮件效果为
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流。
# shell脚本发送邮件
# shell
# 发送邮件
# 发送html邮件
# 5款最佳的免费Linux杀毒软件
# linux脚本实现自动发送和收取邮件的设置方法
# 在 Linux 命令行发送邮件的 5 种方法(推荐)
# Linux安装杀毒工具ClamAV
# 并配置邮件告警
# 一封
# 送人
# 客户端
# 多个
# 才是
# 如有
# 要在
# 就是我
# 可以看到
# 这种情况
# 还需要
# 发送到
# 这篇文章
# 而这
# 最简单
# 为了避免
# 两部分
# 这和
# 最常用
# 可以查看
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何创建自定义Artisan命令?(代码示例)
清除minerd进程的简单方法
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel如何实现API速率限制?(Rate Limiting教程)
javascript中闭包概念与用法深入理解
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
php 三元运算符实例详细介绍
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Java解压缩zip - 解压缩多个文件或文件夹实例
七夕网站制作视频,七夕大促活动怎么报名?
高端建站如何打造兼具美学与转化的品牌官网?
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
轻松掌握MySQL函数中的last_insert_id()
HTML 中动态设置元素 name 属性的正确语法详解
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何快速搭建安全的FTP站点?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
javascript基本数据类型及类型检测常用方法小结
Android自定义listview布局实现上拉加载下拉刷新功能
如何注册花生壳免费域名并搭建个人网站?
公司门户网站制作流程,华为官网怎么做?
如何在宝塔面板创建新站点?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Java类加载基本过程详细介绍
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Android仿QQ列表左滑删除操作
详解CentOS6.5 安装 MySQL5.1.71的方法
,南京靠谱的征婚网站?
JS去除重复并统计数量的实现方法
Laravel怎么上传文件_Laravel图片上传及存储配置
JavaScript实现Fly Bird小游戏
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
如何在景安云服务器上绑定域名并配置虚拟主机?
北京企业网站设计制作公司,北京铁路集团官方网站?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何做网站制作流程,*游戏网站怎么搭建?
如何在万网利用已有域名快速建站?
如何快速搭建高效可靠的建站解决方案?
bootstrap日历插件datetimepicker使用方法
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
如何在宝塔面板中创建新站点?
Python进程池调度策略_任务分发说明【指导】
Swift中switch语句区间和元组模式匹配

