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
不用加双引号。