如何在unix中使用sendmail命令发送带附件的邮件

如何在unix中使用sendmail命令发送带附件的邮件

这就是我尝试使用 sendmail 命令发送电子邮件的方式。

echo "Dear user,

please find the attached file.

Thanks,
Support team " | mailx -s "x12 extract for 837 transaction" -a $LogFilePath/file.csv $email_id 

但我收到错误“-a非法操作”,用 man mailx 命令检查,没有像 -a 这样的标志,并且有附件标志。

所以我尝试使用sendmail命令

( 
echo $email_id
#From: $email_from_recipients
echo "MIME-Version: 1.0"
echo "Content-Type: text/html; charset=us-ascii"   
echo Subject: Report
$LogFilePath/file.csv

) | /usr/lib/sendmail -t

它没有将文件作为附件发送。

csv 文件的内容显示在邮件正文中,并以逗号分隔。

如何在unix中使用sendmail命令发送附件?

答案1

在 To 之前尝试 -a 选项 例如

回声测试| mailx -s“主题”--attach=/home/someuser/test.txt“[电子邮件受保护]" 或 echo test | mailx -s "Subj" -a /home/someuser/test.txt "[电子邮件受保护]

答案2

sendmail 客户端对 mime 一无所知。当你可以继续沿着你要走的路,在 bash 中创建哑剧结构,你将踏上一段痛苦且充满错误的旅程。特别是如果您必须在 shell 脚本中滚动自己的 base64 实现。一些电子邮件客户端仍会处理 uuencoded 附件......

(
  echo "here's the file" 
  uuencode $LogFilePath/file.csv
) | mailx -s "x12 extract for 837 transaction" $email_id

...支持充其量也只是零散的。

您确实需要一个能够正确理解 MIME 的邮件客户端。大多数主要编程语言都有库,但也有易于与脚本集成的独立程序 - 尽管您可能需要自己编译它们。您没有告诉我们 Linux 的风格是什么,或者您是否是系统的管理员(如果不是,那么管理员应该是您的第一个停靠点)。

我之前使用过 mailx(可能是不同版本的)来实现此目的和 mutt。这些可在来源锻造GitHub分别。

答案3

如何使用 sendmail 创建附件?你不知道。 Sendmail 是邮件传输代理 (MTA)。创建电子邮件消息(包括添加附件或签名)是邮件用户代理 (MUA) 的功能。一些流行的 MUA 包括 mutt、elm、exmh、Netscape、Eudora 和 Pine。一些专门的包(元邮件、一些 Perl 模块等)也可用于创建带有附件的消息。

答案4

--attach

例如echo test | mail -s "Subj" "[email protected]" --attach=/home/someuser/test.txt

相关内容