Можно ли отправить содержимое vim по электронной почте с помощью HTML? - PullRequest
6 голосов
/ 01 апреля 2010

Мне нравится просматривать текущие различия в исходных файлах, над которыми я работаю, с помощью такой команды:

vim <(svn diff -dub)

Что я действительно хотел бы сделать, так это отправить по электронной почте этот раскрашенный diff. Я знаю, что vim может экспортировать HTML с помощью: TOhtml, но как мне преобразовать этот вывод в HTML-письмо? В идеале. Я хотел бы иметь возможность отправлять HTML различий с помощью одной команды сценария оболочки.

Ответы [ 2 ]

10 голосов
/ 01 апреля 2010

Следующая строка содержит файл HTML с именем email.html:

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

Теперь вы можете использовать код Pekka для отправки электронного письма.

Однако Я верю в использование правильного инструмента для правильной работы - и 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 

EDIT В случае, если код Пекки не сработал - как для меня - потому что у вас нетнеобходимые версии mail и mutt установлены, тогда вы можете использовать sendmail для отправки электронного письма в формате HTML следующим образом:

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

Важно оставить пустую строку между заголовком и теломЭл. адрес.Также обратите внимание, что, конечно, нет необходимости создавать временный файл email.html.Просто вставьте остальные команды в нужное место и удалите перенаправления в файл.

1 голос
/ 01 апреля 2010

Я не Linux Guru, но похоже, что он должен удовлетворить ваши потребности и направить ваш вывод в:

Отправка HTML-файла по электронной почте из командной строки. (использует mail)

Здесь также есть одна строка mutt пример здесь :

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

это сгенерирует электронную почту в чистом HTML-формате без альтернативы в виде чистого текста - для этого вам придется создавать многоэлементную почту ... Но, возможно, она будет делать то, что вам нужно.

...