unn*_*han 7 linux email sendmail
有没有一种方法嵌入图像转换成使用诸如Linux命令的电子邮件的正文mutt或sendmail?
我用过这个
mutt -e 'set content_type="text/image"' \
u.mohan@6dtech.co.in -s "TEST" \
-i image001.jpg < data.txt
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我编写了一个 shell 脚本,用于发送带有mutt嵌入图像而不是链接图像的 HTML 消息。
几个步骤:
<img>下载由原始 HTML 中的标签链接的所有图像文件,src通过将url 更改为cid,来准备 HTML 文件(neo)muttsendmail这是使用 HTML 文件名作为参数的主脚本(未执行任何检查,请不要将其视为 alpha 软件):
#!/bin/bash
F=$(basename "$1")
DIR="/tmp/inlinizer-$$/"
mkdir -p $DIR/Img
grep "src=" "$1" | sed -e "s,.*src=\"\([^\"]*/\)*\([^\"/]*\)\".*,wget \1\2 -O $DIR/Img/\2," > $DIR/get_img.sh
bash $DIR/get_img.sh
sed -e 's,src="\([^"]*/\)*\([^"/]*\)",src="cid:\2@example.com",g' < "$1" > "$DIR/$F"
neomutt -e 'set smtp_url=""' -e 'set sendmail="mysendmail"' -e "set content_type=text/html" me@example.com -s "test" -a $DIR/Img/* < "$DIR/$F"
Run Code Online (Sandbox Code Playgroud)
还需要一个自定义的 sendmail 命令(mysendmail在上面),它对以下生成的电子邮件文件进行后处理mutt:
sed -e 's,Content-Disposition: attachment; filename="\([^"]*\)",Content-Disposition: inline; name="\1"\nContent-ID: <\1@example.com>,' < /dev/stdin | sed -e 's,Content-Type: multipart/mixed;,Content-Type: multipart/related;,' | sendmail $*
Run Code Online (Sandbox Code Playgroud)
我已经在 GMail 和其他一些网络邮件中测试了它。欢迎报告邮件客户端或网络邮件的问题。
您可以通过将命令行中的-i更改为-a来附加图像。这不会嵌入图像本身,但会包含它。如果您想嵌入它,您发送的邮件必须是内容类型,并包含一个标签来显示附加图像。text/htmlimg
请参阅此 SO 页面,了解如何在 HTML 邮件中正确嵌入图像附件。
| 归档时间: |
|
| 查看次数: |
16800 次 |
| 最近记录: |