2015-05-22 29 views
2

我正在做一個MySQL數據庫備份腳本,我希望它通過電子郵件向我報告。Bash腳本發送附件,正文和主題的電子郵件

到目前爲止,我能夠讓它有一個主題和一個沒有附件的身體。代碼:

cat << EOF | mail -s "MySQL backups for $(date +%d.%m.%Y\ %H:%M)" [email protected] 
'text in the body' 
text outside of the quotes 
$value 
EOF 

也分開比上面,我能夠使它發送主題和附件,但沒有身體的電子郵件。代碼:

gzip -c test.sh | uuencode test.sh.gz | mail -s "MySQL backups for $(date +%d.%m.%Y\ %H:%M)" [email protected] 

當我嘗試將它們組合如下時,我收到一封空的電子郵件。

cat << EOF | gzip -c test.sh | uuencode test.sh.gz | mail -s "MySQL backups for $(date +%d.%m.%Y\ %H:%M)" [email protected] 
'text in the body' 
text outside of the quotes 
$value 
EOF 

回答

2

在管道命令中,您使用附件的編碼覆蓋了消息的正文。

嘗試類似:

cat << EOF | mail -s "MySQL backups for $(date +%d.%m.%Y\ %H:%M)" [email protected] 
'text in the body' 
text outside of the quotes 
$value 

$(gzip -c test.sh | uuencode test.sh.gz) 
EOF 
+0

太棒了!它按預期工作。 現在我可能需要了解如何在不存檔文件的情況下做同樣的事情......如果您仍然可以提供幫助,將不勝感激。 –

+0

你正在歸檔到一個文件嗎? 'gzip -c'寫入標準輸出,而不是'test.sh.gz',並且由於'uuencode'的標準輸入通過管道連接到'gzip'的輸出,所以忽略了你給它的文件名作爲論據。 – chepner

+0

嗯,我用'$(gzip -c test.sh | uuencode test.sh)'試過了,它發給我一個文件,但它不可讀。 我用'$(test.sh)'試過,但沒有附加任何東西。 我也嘗試'$ test.sh',但它沒有附加任何東西。 –

相關問題