如何使用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