如何使用Linux命令行将文件作为电子邮件附件发送?

时间:2020-03-05 18:40:58  来源:igfitidea点击:

我创建了一个脚本,该脚本每天晚上在Linux服务器上运行,该脚本使用mysqldump将每个MySQL数据库备份到.sql文件,并将它们打包为压缩的.tar文件。我要完成的下一步是通过电子邮件将该tar文件发送到远程电子邮件服务器以进行保管。通过将备份文本文件通过管道传递到mailx,我已经能够向主体中的原始脚本发送电子邮件,如下所示:

$ cat mysqldbbackup.sql | mailx [email protected]

" cat"回显备份文件的文本,该文本通过接收者的电子邮件地址作为参数传递到" mailx"程序中。

虽然可以满足我的要求,但我认为它可能会更好,是否可以使用Shell脚本或者其他方式将压缩的.tar文件作为附件发送到外发电子邮件中?这样就不必处理非常长的电子邮件,其中包含标头数据并且经常出现换行问题等。

解决方案

回答

通过查看" man mailx",mailx程序没有添加文件的选项。我们可以使用其他程序,例如mutt。

echo "This is the message body" | mutt -a file.to.attach -s "subject of message" [email protected]

mutt的命令行选项可以通过mutt -h来显示。

回答

我们可以使用mutt发送带有附件的电子邮件

mutt -s "Backup" -a mysqldbbackup.sql [email protected] < message.txt

回答

根据linux版本,它可能称为mail。在上面引用@David:

mail -s "Backup" -a mysqldbbackup.sql [email protected] < message.txt

或者:

cat message.txt | mail -s "Backup" -a mysqldbbackup.sql [email protected]

回答

或者,失败的mutt:

gzip -c mysqldbbackup.sql | uuencode mysqldbbackup.sql.gz  | mail -s "MySQL DB" [email protected]

回答

metamail具有metasend工具

metasend -f mysqlbackup.sql.gz -t [email protected] -s Backup -m application/x-gzip -b

回答

我用的是mpack。

mpack -s subject file [email protected]

不幸的是,mpack无法将'-'识别为stdin的别名。但是下面的工作,并且可以很容易地包装在(shell)别名或者脚本中:

mpack -s subject /dev/stdin [email protected] < file