使用linux命令在电子邮件中嵌入图像

unn*_*han 7 linux email sendmail

有没有一种方法嵌入图像转换成使用诸如Linux命令的电子邮件的正文muttsendmail

我用过这个

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)

但它不起作用.

Joc*_*oce 5

我编写了一个 shell 脚本,用于发送带有mutt嵌入图像而不是链接图像的 HTML 消息。

几个步骤:

  1. <img>下载由原始 HTML 中的标签链接的所有图像文件,
  2. src通过将url 更改为cid,来准备 HTML 文件
  3. 准备一封多部分电子邮件(neo)mutt
  4. 修复此电子邮件中的一些内容描述标签
  5. 发送与sendmail

这是使用 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 和其他一些网络邮件中测试了它。欢迎报告邮件客户端或网络邮件的问题。


Chr*_* W. 0

您可以通过将命令行中的-i更改为-a来附加图像。这不会嵌入图像本身,但会包含它。如果您想嵌入它,您发送的邮件必须是内容类型,并包含一个标签来显示附加图像。text/htmlimg

请参阅此 SO 页面,了解如何在 HTML 邮件中正确嵌入图像附件。

在 HTML 电子邮件中嵌入附加图像