Отправка текстового файла как есть

package-cleanup --oldkernels --count = 1 удалить все ядра, кроме самого последнего.

2
04.04.2019, 19:18
3 ответа

Я бы попробовал

unix2dos < file.txt | mail -s 'subject...' email

где

  • unix2dosпреобразует вашу строку (LF only )в окончания Windows (CR/LF ).
  • входной файл должен быть предоставлен на стандартный ввод
1
27.01.2020, 22:17

Описательный ответ

Включает изменения согласно комментариям @StéphaneChazelas, а также Ответ

Общая проблема заключается в том, что большинство современных клиентов Mail User Agent (MUA )не отображают обычный текст в формате Monospace. Автономные клиенты, такие как Evolution от Gnome, Microsoft Outlook и Thunderbird от Mozilla, используют различные шрифты. В то время как большинство клиентов веб-почты, таких как Gmail, ожидают и отображают HTML. К счастью, существует HTML-тег для разделения блока предварительно отформатированного текста -. Для удобства этот набор тегов <pre></pre>. К сожалению, Unix mailпо умолчанию отправляет электронную почту в виде простого текста. Таким образом, необходимо решить две проблемы:

  1. Внесите в отправленный файл теги <pre></pre>HTML.
  2. Измените content-typeотправленного письма на text/html.

Добавление тегов HTML представляет собой простой процесс добавления тега <pre>перед первой строкой и тега </pre>после последней строки отправляемого файла. Я позаимствовал метод отправки электронной почты в формате HTML из этого ответа .

Функциональный сценарий

Обратите внимание, что это очень простой, не -готовый к работе скрипт, без проверки ошибок:

#!/bin/bash
# Requires GNU recode

# Usage:
#./email_log.sh file_to_send.txt subject recipient 

# Set paths and filenames
_dir="."
_infile=$1
_subject=$2
_user=$3
_sendfile="$_dir/send.txt"

# Prepend and append <pre></pre> HTML tags
cat $_infile |recode..html |sed  "1s;^;To: $_user\nSubject: $_subject\nContent-Type: text/html\n<html><body><pre>\n;" > $_sendfile
echo "</pre></body></html>" >> $_sendfile

# Sending html email
cat $_sendfile | /usr/sbin/sendmail -t -oi

# Cleanup

# rm $_sendfile

Выполнить следующим образом:

./email_log.sh test_lines.txt "This is a test of sending a text file using <pre> html tags" user1

Полное электронное письмо с заголовками, показывающими, что содержимое -имеет тип text/htmlи добавлены теги <pre>:

Return-path: <user1@host>
Envelope-to: user1@host
Delivery-date: Fri, 05 Apr 2019 09:39:03 -0400
Received: from user1 by host with local (Exim 4.92)
        (envelope-from <user1@host>)
        id 1hCP3f-0000Ie-T6
        for user1@host; Fri, 05 Apr 2019 09:39:03 -0400
Subject: This is a test of sending a text file using <pre> html tags
Content-Type: text/html
To: <user1@host>
X-Mailer: mail (GNU Mailutils 3.5)
Message-Id: <E1hCP3f-0000Ie-T6@pots>
From: user1 <user1@host>
Date: Fri, 05 Apr 2019 09:39:03 -0400
X-Evolution-Source: 2e20a156d92decafcdd72e4d7b87e28dd95ed39a
MIME-Version: 1.0

<pre>
1234567890 1234567890
1234
123456
Do not wrap around this line please.  Do not wrap around this line please.  Do not wrap around this line please. Do not wrap around this line please.
1234567890

 _________________________________
< Plain Text content sent as HTML >
 ---------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
</pre>

Отображение электронной почты в Gnome's Evolution, показывающее, что MUA теперь отображает текст в моноширине, как и предполагалось:

Preformatted Monospace Text sent as HTML email

0
27.01.2020, 22:17

Похожий, но более надежный вариант подхода @RubberStamp mail, при котором мы отправляем электронное письмо в формате HTML внутри <pre></pre>, чтобы почтовые клиенты отображали его как -в фиксированном -ширина шрифта (требуется GNUrecode):

#! /bin/sh -
PATH=$PATH:/usr/sbin:/usr/lib # adding common locations of sendmail
export PATH

{
  printf '%s\n' \
    'To: email' \
    'Subject: test' \
    'MIME-Version: 1.0' \
    'Content-Type: text/html' \
    '' \
    '<html><body><pre>'
  /path/to/executable-script/executable-script.sh status |
    recode..html
  printf '</pre></body></html>\n'
} | sendmail -t -oi

Если recodeне установлен и не может быть установлен, а в вашей системе есть perl-модуль HTML::Entities, вы можете заменить recode..htmlна:

perl -Mopen=locale -MHTML::Entities -pe '$_=encode_entities$_'
0
27.01.2020, 22:17

Теги

Похожие вопросы