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??
不用加雙引號。