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

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

$ cat mysqldbbackup.sql | mailx backup@email.com

cat 呼应备份文件的文本,并将其输送到mailx 程序中,并将收件人的电子邮件地址作为参数传递。

虽然这完成了我所需要的,但我认为还可以更进一步,是否有办法,使用shell脚本或其他方式,将压缩的.tar文件作为附件发送到发出的电子邮件中?这将避免处理非常长的电子邮件,其中包含头数据,并经常有文字包装问题等。

通过查看man mailx,mailx程序没有附加文件的选项。你可以使用另一个程序,如mutt。

echo "This is the message body" | mutt -a file.to.attach -s "subject of message" recipient@domain.com

mutt的命令行选项可以用mutt -h显示。

评论(3)

根据你的linux版本,它可能被称为mail。 引用上面@David的话。

mail -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt

或者也可以。

cat message.txt | mail -s "Backup" -a mysqldbbackup.sql backup@email.com 
评论(9)

你可以使用mutt来发送带附件的电子邮件

mutt -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt
评论(1)