gpt4 book ai didi

linux - 使用 'sendmail' 和 uuencode 发送邮件,并附上主题

转载 作者:IT王子 更新时间:2023-10-29 00:54:16 30 4
gpt4 key购买 nike

我正在尝试使用 sendmail 发送带附件的邮件。问题是我无法随此发送主题行。

以下命令行会触发两封邮件,而不是一封 - 一封带有“Subject : Report”,另一封带有附件:

/usr/bin/gmime-uuencode "/tmp/url_by_ip.txt" "Report.txt" | echo "Subject: Report" | /usr/sbin/sendmail <sender> <receiver>

最佳答案

如果你可以使用其他命令,我建议使用 mutt,它可以很容易地处理附件:

mutt -a file_to_attach -s "your subject" recipient@test.com < /tmp/mail_content

如果您受困于 /usr/sbin/sendmail,那么您还有很多事情要做。 sendmail 没有附件的概念,并将电子邮件内容视为平面 US-ASCII 文本(有关详细信息,请参阅 this answer)。

要使用 sendmail 发送附件,您需要将邮件内容格式化为 MIME 消息。有关一些示例,请参阅 this forum thread on unix.com .


为了让您上手,这里有一个使用 bash 的未经测试的快速示例。为简洁起见,我对变量进行了硬编码,但您可以很容易地将示例转换为将相关变量作为参数的脚本/函数。

#!/bin/bash
# --- user params ---
MAILFROM="peter.gibbons@initech.com"
MAILTO="bill.lumbergh@initech.com"
SUBJECT="TPS Report"
BODY_FILE="/home/peter/coversheey.txt" # file holding mail body
ATT_FILE="/tnp/url_by_ip.txt" # file to attach
ATT_AS_FILE="Report.txt" # name to attach as

# --- generated values ---
BOUNDARY="unique-boundary-$RANDOM"
BODY_MIMETYPE=$(file -ib $BODY_FILE | cut -d";" -f1) # detect mime type
ATT_MIMETYPE=$(file -ib $ATT_FILE | cut -d";" -f1) # detect mime type
ATT_ENCODED=$(base64 < $ATT_FILE) # encode attachment

# --- generate MIME message and pipe to sendmail ---
cat <<EOF | /usr/sbin/sendmail $MAILTO
MIME-Version: 1.0
From: $MAILFROM
To: $MAILTO
Subject: $SUBJECT
Content-Type: multipart/mixed; boundary="$BOUNDARY"

--$BOUNDARY
Content-Type: $BODY_MIMETYPE
Content-Disposition: inline

$(cat $BODY_FILE)
--$BOUNDARY
Content-Type: $ATT_MIMETYPE; name="$ATT_AS_FILE"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$ATT_AS_FILE"

$ATT_ENCODED
--$BOUNDARY
EOF

当然,如果您乐于使用更高级别的脚本语言(Python、Ruby、Perl 等),那么现有的模块已经为您完成了繁重的工作。

附注还有 mpack为您进行 MIME 转换的实用程序,但据我所知,它在大多数 *nix 机器上都不是默认的。

关于linux - 使用 'sendmail' 和 uuencode 发送邮件,并附上主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063084/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com