这就是我尝试使用 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
答案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 的风格是什么,或者您是否是系统的管理员(如果不是,那么管理员应该是您的第一个停靠点)。
答案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