使用msmtp和mutt在CentOS上发送指定目录下的所有文件作为邮件附件

devtools/2025/4/1 19:27:21/

1.安装 msmtp
如果尚未安装,请先通过以下命令安装msmtp

sudo yum install msmtp

2.配置 msmtp 使用新浪邮箱:
创建或编辑配置文件~/.msmtprc,输入以下内容(记得替换授权码)。

defaults
tls on
tls_starttls off
tls_trust_file /etc/pki/tls/certs/ca-bundle.crtaccount sina
host smtp.sina.com
port 465
auth on
user 你的邮件名称@sina.com
password 你的授权码-开启POP3页面里面找
from 你的邮件名称@sina.comaccount default : sina

请确保将“你的邮件名称@sina.com”替换为你的实际新浪邮箱地址。

修改权限:

chmod 600 ~/.msmtprc


3.测试配置:
可以发送一封测试邮件来验证配置是否正确。

echo -e "Subject: Test Mail\r\n\r\nThis is a test email." | msmtp --debug recipient@example.com

recipient@example.com要修改为你的收件邮箱地址

-----------------------

安装和配置 mutt 是处理邮件发送(包括附件)的一个更简便的选择。下面是在 CentOS 系统上安装 mutt 并使用它来发送带有附件的邮件的步骤。

安装 mutt
首先,你需要在 CentOS 上安装 mutt。可以通过以下命令进行安装:

sudo yum install mutt

配置 mutt
创建或编辑 .muttrc 文件:
你需要为 mutt 创建一个配置文件。这个文件通常位于你的主目录下,名为 .muttrc。你可以使用你喜欢的文本编辑器打开并编辑这个文件,例如:

vi ~/.muttrc

添加配置信息:根据你使用的新浪邮箱服务,在.muttrc中添加如下内容(记得替换为你自己的邮箱地址和授权码):

cat > ~/.muttrc <<'EOF'
# 基本设置
set from = "your_email@sina.com"
set realname = "WJF-Email"# 使用 msmtp 作为发信代理(关键!)
set sendmail = "/usr/bin/msmtp"# 禁用内置SMTP(避免冲突)
unset smtp_url
unset smtp_pass
EOF

请将 your_email@sina.com 替换为你的实际新浪邮箱地址,并将 授权码 替换为你从新浪邮箱获取的授权码。
-----------------------

编写脚本发送邮件


接下来,我们将编写一个Bash脚本来发送指定目录下的所有文件作为附件。

1.创建脚本文件:
在你喜欢的目录下创建一个新的脚本文件,例如send_attachments.sh。

vi send_attachments.sh

2.编写脚本内容:
在脚本文件中添加如下内容,记得根据实际情况修改路径和邮箱地址。

#!/bin/bash# 配置
TO="receive-email@qq.com"
FROM="your-email@sina.com"
CURRENT_TIME=$(date +'%Y-%m-%d %H:%M')  # 先获取时间
SUBJECT="数据附件 ${CURRENT_TIME}"
ATTACH_DIR="/你的centos下的目录"# 检查目录
if [ ! -d "$ATTACH_DIR" ]; thenecho "错误:目录 $ATTACH_DIR 不存在" >&2exit 1
fi# 收集附件
attachments=()
while IFS= read -r -d '' file; doattachments+=("-a" "$file")
done < <(find "$ATTACH_DIR" -maxdepth 1 -type f -print0)# 无附件时退出
if [ ${#attachments[@]} -eq 0 ]; thenecho "警告:未找到可发送的文件" >&2exit 0
fi# 发送邮件(静默模式,错误输出到日志)
if ! echo " ${CURRENT_TIME}发送的附件" | \mutt -e "set from=$FROM" -s "$SUBJECT" "${attachments[@]}" -- "$TO" 2>> ~/.msmtp.log; thenecho "邮件发送失败!请检查日志:~/.msmtp.log" >&2exit 1
elseecho "邮件已成功发送至 $TO"
fi

3.赋予执行权限:
给脚本赋予可执行权限。

chmod +x send_attachments.sh

4.运行脚本:
执行脚本来发送邮件。

./send_attachments.sh

这样,你就可以在CentOS系统中使用msmtp和新浪邮箱发送指定目录下的所有文件作为附件了。确保你的服务器能够访问外部SMTP服务,并且防火墙规则允许相应的连接。

如果上面运行有问题,问豆包等AI工具。

要在Shell脚本中实现同时发送邮件到多个邮箱地址,有几种实现方式。以下是完整的解决方案: 方法1:使用空格分隔的多个收件人(最简单)

TO="receive1@qq.com receive2@qq.com receive3@qq.com"

然后在mutt命令中直接使用:

mutt -e "set from=$FROM" -s "$SUBJECT" "${attachments[@]}" -- $TO

注意:多个邮件,上面的命令"$TO"要修改为$TO

单个邮件,也可以直接使用  $TO  

不用加双引号。


http://www.ppmy.cn/devtools/172446.html

相关文章

第十五章:Python的Pandas库详解及常见用法

在数据分析领域&#xff0c;Python的Pandas库是一个不可或缺的工具。它提供了高效的数据结构和数据分析工具&#xff0c;使得数据处理变得简单而直观。本文将详细介绍Pandas库的基本功能、常见用法&#xff0c;并通过示例代码演示如何使用Pandas进行数据处理。最后&#xff0c;…

在Qt中判断输入的js脚本是否只包含函数

目前在使用QtScriptEngine&#xff0c;在利用evaluate注册子函数时&#xff0c;要求用户输入的js文件中的内容仅仅是函数&#xff0c;函数体外&#xff0c;不能出现一些变量的声明、函数的调用等其他代码。 反复咨询DeepSeek后&#xff0c;终于给出了一个目前测试可用的代码&am…

Sentinel 相关知识点

Sentinel 实现原理&#xff1f; Sentinel 是面向分布式服务架构的流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助开发者保障微服务的稳定性。以下是 Sentinel 的实现原理&#xff1a; 核心概念 资源&…

[Mac]利用Hexo+Github Pages搭建个人博客

由于我这台Mac基本没啥环境&#xff0c;因此需要从零开始配置&#xff0c;供各位参考。 注意⚠️&#xff1a;MacBook (M4)使用/bin/zsh作为默认Shell&#xff0c;其对应的配置文件为~/.zshrc 参考文档&#xff1a; HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程 文…

基于Flask的防火墙知识库Web应用技术解析

基于Flask的防火墙知识库Web应用技术解析 一、系统概述 本系统是一个结构化网络防火墙知识库的Web实现&#xff0c;采用Python Flask框架构建&#xff0c;提供章节导航、知识点检索、详情展示等功能。系统整合了100条防火墙领域核心知识点&#xff0c;涵盖基础概念、配置实践…

SylixOS 中 select 原理及使用分析

1、select接口简介 1.1 select接口使用用例 select 是操作系统多路 I/O 复用技术实现的方式之一。 select 函数允许程序监视多个文件描述符&#xff0c;等待所监视的一个或者多个文件描述符变为“准备好”的状态。所谓的”准备好“状态是指&#xff1a;文件描述符不再是阻塞状…

windows磁盘管理

简介 Windows 磁盘管理是 Windows 操作系统中的一个功能强大的工具&#xff0c;用于管理和维护计算机的磁盘分区、卷和存储设备 磁盘管理的主要功能 查看磁盘分区信息&#xff1a; 可以查看所有磁盘的分区情况&#xff0c;包括分区大小、分区类型&#xff08;如 NTFS、FAT32 …

霸王茶姬小程序(2025年1月版)任务脚本

脚本用于自动执行微信小程序霸王茶姬的日常签到和积分管理任务。 脚本概述 脚本设置了定时任务(cron),每天运行两次,主要用于自动签到以获取积分,积分可以用来换取优惠券。 核心方法 constructor:构造函数,用于初始化网络请求的配置,设置了基础的 HTTP 请求头等。 logi…