Ad Widget

Collapse

Отправка оповещений в формате html

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ival
    Junior Member
    • Feb 2018
    • 20

    #1

    Отправка оповещений в формате html

    Добрый день.

    Помогите пожалуйста.
    Попробовал настроить оповещения в формате html через скрипт.

    #! /bin/sh
    # $1 : Recipient
    # $2 : Subject
    # $3 : Message
    to=$1
    subject=$2
    message=$3
    echo $message | mutt -e "set content_type=text/html" "$to" -s "$subject"


    В итоге все равно сообщение создается как plain/text. Что я делаю не так?

    Система CentOS 7.4.1708 + Zabbix 3.4.6 Revision 76823
  • dmitri_n
    Junior Member
    • Aug 2014
    • 1

    #2
    html сообщение

    html сообщение можно получить простым способом нужно вспомнить, что html это txt. Решение проверенное. В поле где пишется (Действия-> Операции-> Сообщение по умолчанию) нужно писать в обычном html формате
    <html>
    <head>
    <title>HTML5 Tutorial:first tutorial</title>
    </head>
    <body>
    Hello World from HTML5
    </body>
    </html>

    Comment

    • ival
      Junior Member
      • Feb 2018
      • 20

      #3
      Originally posted by dmitri_n
      html сообщение можно получить простым способом нужно вспомнить, что html это txt. Решение проверенное. В поле где пишется (Действия-> Операции-> Сообщение по умолчанию) нужно писать в обычном html формате
      <html>
      <head>
      <title>HTML5 Tutorial:first tutorial</title>
      </head>
      <body>
      Hello World from HTML5
      </body>
      </html>
      Именно так и сделано.
      $3 представляет из себя html код. При отправки сообщение приходит в text/plain. При этом если не использовать заполнение письма из переменных Zabbix ($1,$2,$3) а в ручную заполнить через echo хедеры и текст письма, то отправка приходит в text/html

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3406

        #4
        Originally posted by ival
        Добрый день.

        Помогите пожалуйста.
        Попробовал настроить оповещения в формате html через скрипт.

        #! /bin/sh
        # $1 : Recipient
        # $2 : Subject
        # $3 : Message
        to=$1
        subject=$2
        message=$3
        echo $message | mutt -e "set content_type=text/html" "$to" -s "$subject"


        В итоге все равно сообщение создается как plain/text. Что я делаю не так?

        Система CentOS 7.4.1708 + Zabbix 3.4.6 Revision 76823
        Во-первых, в параметрах mutt сначала "-s Subject", а потом уже список адресатов. Хотя иногда работает и в обратном порядке тоже, но никто не гарантирует, что так будет работать всегда.
        Во-вторах (и в-главных), не
        Code:
        echo $message
        а
        Code:
        echo "$message"
        У Вас ведь текст сообщения наверняка содержит пробелы, переводы строк и тому подобные символы. Используя в скрипте переменную без обрамляющих кавычек, Вы их можете потерять.

        Comment

        • ival
          Junior Member
          • Feb 2018
          • 20

          #5
          Originally posted by Kos
          Во-первых, в параметрах mutt сначала "-s Subject", а потом уже список адресатов. Хотя иногда работает и в обратном порядке тоже, но никто не гарантирует, что так будет работать всегда.
          Во-вторах (и в-главных), не
          Code:
          echo $message
          а
          Code:
          echo "$message"
          У Вас ведь текст сообщения наверняка содержит пробелы, переводы строк и тому подобные символы. Используя в скрипте переменную без обрамляющих кавычек, Вы их можете потерять.
          Сомневался, что Ваши замечания решат проблему с Content-Type, но изменил все в соответствии с Вашими рекомендациями



          В итоге все равно приходит text/plain

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3406

            #6
            Code:
            message=$3
            тоже поменяйте на
            Code:
            message="$3"
            Как, впрочем, и остальные переменные (subject, to), если они могут содержать пробелы.

            Comment

            • ival
              Junior Member
              • Feb 2018
              • 20

              #7
              Originally posted by Kos
              Code:
              message=$3
              тоже поменяйте на
              Code:
              message="$3"
              Как, впрочем, и остальные переменные (subject, to), если они могут содержать пробелы.
              Поменял.
              Сообщение пришло text/plain

              Comment

              • Kos
                Senior Member
                Zabbix Certified SpecialistZabbix Certified Professional
                • Aug 2015
                • 3406

                #8
                Originally posted by ival
                Поменял.
                Сообщение пришло text/plain
                Странно это.
                А можете ли показать весь текст того сообщения, которое в итоге приходит (вместе с заголовками)?

                Comment

                • ival
                  Junior Member
                  • Feb 2018
                  • 20

                  #9
                  Originally posted by Kos
                  Странно это.
                  А можете ли показать весь текст того сообщения, которое в итоге приходит (вместе с заголовками)?

                  Замазал звездами **** имена, ip и адреса

                  Received: from ************** by *************
                  with Microsoft SMTP Server (TLS) id 15.0.1178.4 via Mailbox Transport; Mon, 5
                  Mar 2018 14:32:04 +0300
                  Received: from ************* by *************
                  (*************) with Microsoft SMTP Server (TLS) id 15.0.1178.4; Mon, 5 Mar
                  2018 14:32:04 +0300
                  Received: from ************ by ****************
                  (*************) with Microsoft SMTP Server id 15.0.1178.4 via Frontend
                  Transport; Mon, 5 Mar 2018 14:31:57 +0300
                  From: ************
                  To: *************
                  Date: Mon, 5 Mar 2018 06:31:57 -0500
                  Subject: Zabbix problem
                  MIME-Version: 1.0
                  Content-Type: text/plain; charset="UTF-8"
                  Content-Transfer-Encoding: base64
                  Message-ID: <38bc8ccbd7e448afb252dd0058b60206@**********>
                  Return-Path: ************
                  X-MS-Exchange-Organization-Network-Message-Id: 38b94460-8fe4-46d3-539e-08d5828cb878
                  X-MS-Exchange-Organization-AuthSource: ***********

                  И собственно текст сообщения

                  <html>
                  <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> test </body> </html>

                  Comment

                  • Kos
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Aug 2015
                    • 3406

                    #10
                    Странно это. Откуда-то ж берутся в заголовке Content-Type и тип, и кодировка. Может, они указаны в каких-либо конфигах, которые читает mutt, либо в переменных окружения? Скажем, где-нибудь в /etc/Muttrc, либо ~/.muttrc или ~/.mutt/muttrc для пользователя zabbix?
                    Будет ли разница, если в начало командной строки для mutt добавить параметр "-n"?

                    Comment

                    • ival
                      Junior Member
                      • Feb 2018
                      • 20

                      #11
                      Originally posted by Kos
                      Странно это. Откуда-то ж берутся в заголовке Content-Type и тип, и кодировка. Может, они указаны в каких-либо конфигах, которые читает mutt, либо в переменных окружения? Скажем, где-нибудь в /etc/Muttrc, либо ~/.muttrc или ~/.mutt/muttrc для пользователя zabbix?
                      Будет ли разница, если в начало командной строки для mutt добавить параметр "-n"?
                      Замазал адреса и доменные имена ********
                      /home/zabbix/.muttrc

                      set from = ********
                      set realname = ""
                      set hostname = "********"
                      set smtp_url = "smtp://*********:25/"
                      set charset="utf-8"
                      set content_type="text/html"
                      set copy=no

                      К сожалению с ключем -n, пришло тоже самое

                      Date: Mon, 5 Mar 2018 07:03:29 -0500
                      Subject: Zabbix resolved
                      MIME-Version: 1.0
                      Content-Type: text/plain; charset="UTF-8"
                      Content-Transfer-Encoding: base64

                      Comment

                      • Kos
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • Aug 2015
                        • 3406

                        #12
                        Похоже, что дело, всё же, не в скрипте, а в чём-то другом.
                        Если сделать
                        Code:
                        su - zabbix
                        и там запустить этот скрипт "руками" - приходит HTML?
                        У mutt, теоретически, есть ключик "-d" (debug), но зависит от того, как он скомпилирован. Если эта опция поддерживается, то с ключиком "-d 2" он должен что-то записать в файл ~/.muttdebug0. Может, там будет что-то интересное?

                        В конце концов, можно вместо mutt пробовать что-нибудь другое аналогичное по назначению - mailx, nail или что есть в Вашем дистрибутиве...

                        Comment

                        • ival
                          Junior Member
                          • Feb 2018
                          • 20

                          #13
                          Originally posted by Kos
                          Похоже, что дело, всё же, не в скрипте, а в чём-то другом.
                          Если сделать
                          Code:
                          su - zabbix
                          и там запустить этот скрипт "руками" - приходит HTML?
                          У mutt, теоретически, есть ключик "-d" (debug), но зависит от того, как он скомпилирован. Если эта опция поддерживается, то с ключиком "-d 2" он должен что-то записать в файл ~/.muttdebug0. Может, там будет что-то интересное?
                          При ручном запуске выдал:
                          Bad IDN in "from": 'srv-mon-001.▒'

                          В том то и дело, что я не могу понять в чем проблема и куда смотреть. Была проба отправлять через ssmtp

                          Запускаем руками и приходит сообщение в text/html
                          #!/bin/sh
                          export smtpemailfrom=************
                          echo "From: <***********>" >> /tmp/test
                          echo "To: <**********>" >> /tmp/test
                          echo "Subject: Zabbix problem" >> /tmp/test
                          echo "MIME-Version: 1.0" >> /tmp/test
                          echo "Content-Type: text/html; charset="UTF-8"" >> /tmp/test
                          echo "Content-Transfer-Encoding: base64" >> /tmp/test
                          /usr/sbin/ssmtp $1 -F $smtpemailfrom < /tmp/test


                          Запускаем в Zabbix и получаем text/plain
                          #!/bin/sh
                          export smtpemailfrom=********
                          echo "From: "<$smtpemailfrom>" >> /tmp/test
                          echo "To: $1" >> /tmp/test
                          echo "Subject: $2" >> /tmp/test
                          echo "MIME-Version: 1.0" >> /tmp/test
                          echo "Content-Type: text/html; charset="utf-8"" >> /tmp/test
                          echo "" >> /tmp/test
                          echo "$3" >> /tmp/test
                          /usr/sbin/ssmtp $1 -F $smtpemailfrom < /tmp/test

                          Comment

                          • AlexSe
                            Junior Member
                            • Jul 2018
                            • 1

                            #14
                            Для себя использую скрипт (почтовый сервер принимает без авторизации):
                            Code:
                            #!/bin/sh
                            
                            export [email protected]
                            export to="$1"
                            export subject="$2"
                            export body="$3"
                            export smtpserver=smtp.contoso.local
                            export smtpport=25
                            sendemail -f "$from" -t "$to" -u "$subject" -s $smtpserver:$smtpport -o message-content-type=html -o message-charset=UTF-8 -m "$body"
                            Необходимо установить sendEmail и указать три параметра в Media Types
                            Click image for larger version

Name:	Снимок.PNG
Views:	327
Size:	16.1 KB
ID:	361794

                            Comment

                            Working...