Отправка выходного файла на почту без изменения данных

#linux #bash #shell #email

#linux #bash #оболочка #Адрес электронной почты

Вопрос:

У меня есть выходной файл с именем result из скрипта, как показано ниже:

 |first_t          |   PASS        |
|second_t       |   PASS        |
|third_t      |   File_Error  |
  

И я использовал приведенную ниже команду столбца, чтобы получить вывод в последовательности, как показано ниже:

 column -t -s " " result > result_new

|first_t   |  PASS        |
|second_t  |  PASS        |
|third_t   |  File_Error  |
  

И после отправки файла result_new на почту с помощью приведенной ниже команды mail, как в приведенном ниже сценарии, я не получаю ожидаемый результат.

 #!/bin/bash
mail -s "COLUMN CHECK_1"  name@gmail.com < result_new
  

Я получаю этот вывод по почте:

 |first_t          |   PASS        |
|second_t       |   PASS        |
|third_t      |   File_Error  |
  

Мой ожидаемый результат в mail должен быть таким:

 |first_t   |  PASS        |
|second_t  |  PASS        |
|third_t   |  File_Error  |
  

Может кто-нибудь сказать мне, что мне здесь делать?

Комментарии:

1. что вы подразумеваете под » не получением ожидаемого результата «? вы получаете сообщение об ошибке (и если да, то какую ошибку)? отправляется ли электронное письмо? если электронное письмо отправляется, есть ли проблема с содержимым электронного письма (и если да, ТО В ЧЕМ проблема)?

2. @markp-fuso Как показано выше, мне не хватает ожидаемого результата

Ответ №1:

Я предполагаю, что проблема связана с (получающим) почтовым клиентом и что он отображает сообщение с использованием шрифта переменной ширины (например, пробелы не такие широкие, как буквы); чтобы обойти эту проблему, я могу придумать пару вариантов:

  • отправьте выходные данные в виде вложения текстового файла ascii (пользователю потребуется открыть вложение с помощью программы чтения текста ascii — например, vim , notepad , и т. Д.)
  • отформатируйте исходящее электронное письмо (например, MIME 'text/html' ), чтобы (принимающий) почтовый клиент знал, что содержимое должно отображаться в виде текста фиксированной ширины (хотя на этом этапе вам теперь нужно посмотреть свои варианты на отправляющей стороне относительно того, как отправить такое форматированное электронное письмо — например, sendmail , mailx , mutt , что бы ни mail указывало нав вашей системе и т. Д.; Это также предполагает, что (принимающий) почтовый клиент способен отображать MIME закодированные сообщения)

Один простой sendmail пример, который я использовал при отправке электронных писем (из linux пользователям Windows / Mac), где я хочу, чтобы содержимое электронного письма отображалось в виде текста фиксированной ширины:

 $ subject="this is the subject  of my email"
$ emlist="list_of_email_addresses"
$ mailfile=$(mktemp)

$ echo "Subject: ${subject}
MIME-Version: 1.0
Content-Type: text/html
<html><body><pre>"              >  "${mailfile}"
cat result_new                  >> "${mailfile}"
echo "</pre></body></html>"     >> "${mailfile}"

$ cat ${mailfile} | /usr/sbin/sendmail ${emlist}
$ 'rm' -rf "${mailfile}"
  

Если у вас нет доступа к sendmail then, вам может потребоваться выполнить некоторое тестирование с помощью вашей почтовой (отправляющей) программы, чтобы узнать, как отправить MIME закодированное сообщение…