代码之家  ›  专栏  ›  技术社区  ›  brianegge

是否可以使用HTML通过电子邮件发送VIM的内容?

  •  6
  • brianegge  · 技术社区  · 14 年前

    我喜欢用如下命令查看正在处理的源文件中的当前差异:

    vim <(svn diff -dub)
    

    我真正想做的是通过电子邮件发送彩色的diff。我知道vim可以用:to html导出html,但如何将此输出导入html电子邮件?理想的。我想用一个shell脚本命令发送一个html diff。

    2 回复  |  直到 14 年前
        1
  •  10
  •   Konrad Rudolph    14 年前

    下面的一行程序生成一个名为 email.html :

    diff file1 file2 | vim - +TOhtml '+w email.html' '+qall!'
    

    现在,您可以使用pekka_ s代码发送电子邮件。

    然而 我相信为正确的工作使用正确的工具,VIM在这里可能不是正确的工具。其他荧光笔也存在,它们的使用在这里更合适。

    例如, Pygments 可以利用它产生同样的效果,更有效,更轻松:

    diff -u report.log .report.log | pygmentize -l diff -f html > email.html
    

    注意这会产生 只有 实际的文本正文,而不是样式表,也不是周围的HTML框架。这必须单独添加,但也不难。下面是一个完整的bash脚本,用于生成有效的最小HTML文件:

    echo '<!DOCTYPE html><html><head><title>No title</title><style>' > email.html
    pygmentize -S default -f html >> email.html
    echo '</style></head><body>' >> email.html 
    diff -u report.log .report.log | pygmentize -l diff -f html >> email.html 
    echo '</body></html>' >> email.html 
    

    编辑 如果Pekka_____浼_ mail mutt 安装后即可使用 sendmail 发送HTML电子邮件如下:

    ( echo 'To: email-address@example.com'
      echo 'Content-Type: text/html'
      echo 'Subject: test'
      echo ''
      cat email.html ) | sendmail -t
    

    在邮件头和正文之间留一个空行是很重要的。另外,请注意,当然不需要创建临时文件 电子邮件.html . 只需将其余命令粘贴到上面的正确位置,然后删除重定向到文件。

        2
  •  1
  •   Pekka    14 年前

    我不是Linux专家,但这看起来应该满足您的需求,将输出输入到:

    Send an HTML file as email from the command line. (使用) mail )

    还有一条线 mutt 例子 here :

    mutt -e "my_hdr Content-Type: text/html" 
         -s "my subject" you@xxxxxxxxxxx < message.html
    

    这将生成一个纯HTML电子邮件,没有纯文本备选方案-因为您必须构建多部分邮件…但也许它能满足你的需要。