当前位置:首页> 正文

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

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

How do I send a file as an email attachment using Linux command line?

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

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

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


一个笨蛋都没有为我工作。它以为电子邮件地址是附件的一部分。不得不做:


或者,失败的mutt:


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

,或者:


man mailx来看,mailx程序没有附加文件的选项。您可以使用其他程序,例如mutt。

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


我使用为这种情况创建的SendEmail。它是为Ubuntu打包的,因此我认为它可用

sendemail -f sender@some.where -t receiver@some.place -m"Here are your files!" -a file1.webp file2.zip

http://caspian.dotconf.net/menu/Software/SendEmail/


我使用mpack。

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



我曾经在Solaris上为ksh编写了此函数(使用Perl进行base64编码):


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


发送带有一个带有mailx的纯文本附件的纯文本正文电子邮件:

以下与上面的命令相同,没有换行符

请确保为此定义了文件/home/el/attachfile.txt内容:

如果您没有uuencode,请阅读以下内容:https://unix.stackexchange.com/questions/16277/how-do-i-get-uuencode-to-work在Linux上,发送带有PDF附件并带有sendmail的HTML正文电子邮件:

确保已安装ksh:yum info ksh

请确保已安装并配置sendmail。

进行确保已安装uuencode并可用:https://unix.stackexchange.com/questions/16277/how-do-i-get-uuencode-to-work

制作一个名为test.sh的新文件,然后将其放在主目录中:/home/el

test.sh中放置以下代码:

更改test.sh顶部的导出变量以反映您的地址和文件名。

下载一个测试pdf文档,并将其放入名为pdf-test.pdf

/home/el中,制作一个名为/home/el/email_body.htm的文件,并将其放在ne:

确保pdf文件具有足够的755权限。

运行脚本./test.sh

检查您的电子邮件收件箱,文本应为HTML格式的文件,而pdf文件会自动解释为二进制文件。注意,即使您将电子邮件发送给自己,一天也不能超过15次使用此功能,但是gmail中的垃圾邮件过滤器会在一个域中将产生电子邮件的邮件列入黑名单,而没有让您选择允许它们通过的功能。而且您会发现它不再起作用,或者它只能通过附件,或者电子邮件根本无法通过。如果您必须对此进行大量测试,请将其分散几天,否则您将被标记为垃圾邮件发送者,此功能将不再起作用。


这里有几个答案建议使用mailmailx,因此,更多的背景知识可帮助您在上下文中解释这些内容。

历史记录

Unix mail的起源可追溯到贝尔实验室Unix早期历史的迷雾


另一种选择-Swaks(瑞士军刀用于SMTP)。


元邮件具有metasend

工具


我使用了

,这对我来说效果很好....


对我而言,最快捷的方法是

,因此在您的示例中,它将是

文件...


我通常只在RHEL上使用mail命令。我已经尝试过mailx,它非常有效。


从源计算机

在目标计算机上。将收到的邮件正文另存为db.sql.gz.b64;然后..


Mailutils可以轻松做到这一点

  • -A file附加文件
  • -M启用MIME,以便您可以具有附件和纯文本主体。

如果尚未安装,请运行


只需加上2美分,我就可以编写自己的PHP脚本:

http://php.net/manual/en/function.mail.php

有该页面上的示例中有很多方法来进行附件。


不是一种发送电子邮件的方法,但是您可以为此使用在线Git服务器(例如Bitbucket或类似服务)。

这样,您可以使用git push命令,所有版本都可以以压缩和有组织的方式存储。


根据您的邮件命令选项(使用man mail进行检查)和版本,您可以执行

echo yourBody|mail -s yoursubject -A /your/attachment/file john@doe.com


这是我在CentOS中处理一个大日志文件的方式:


如果文件是文本,则可以通过以下方式在体内最简单地发送它:


使用mailx命令

使用sendmail


mailx现在确实具有用于附件的-a选项。


如果mutt无法正常工作或未安装,请尝试以下操作-


展开全文阅读

相关内容