Envie a saída de um arquivo HTML dentro do corpo do email usando mailx

2

Descrição do problema: -

Atualmente, estou enviando um e-mail usando mailx anexando um arquivo html ao e-mail. Mas quero enviar um e-mail usando o comando mailx em vez de anexar o html file em um e-mail, quero mostrar os resultados de html file em um corpo de e-mail.

Abaixo está o script que estou usando para enviar um e-mail com algum conteúdo no corpo de um e-mail e attaching chart.html file em um e-mail. E instead of attaching html file em um e-mail, quero mostrar o output of html file within an email body . Alguém pode me mostrar uma base de exemplo no meu script abaixo que mudanças eu preciso fazer para conseguir isso?

mailx -s "LIP for $DATE_YEST_FORMAT1" -r [email protected] [email protected] <<EOF

Total Items Purchased: 'echo $QUERY1 | awk '{print $1}''

Total Items Missingo: 'echo $QUERY1 | awk '{print $2}''

Error Percentage: $QUERY2

'uuencode /tmp/chart.html chart.html'

EOF

E este é o meu chart.html file , que desenha um gráfico. Por isso, preciso mostrar esse gráfico no corpo do e-mail.

<html>
  <head>
    <!--Load the AJAX API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script><scripttype="text/javascript">

      // Load the Visualization API and the piechart package.
      google.load('visualization', '1.0', {'packages':['corechart']});

      // Set a callback to run when the Google Visualization API is loaded.
      google.setOnLoadCallback(drawChart);

      // Callback that creates and populates a data table,
      // instantiates the pie chart, passes in the data and
      // draws it.
      function drawChart() {

        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Title');
        data.addColumn('number', 'Value');
        data.addRows([
          ['No Error Percentage', $NOERROR],
             ['Error Percentage', $ERROR]
        ]);

        // Set chart options
        var options = {'title':'LIP Data Quality Report',
                       'width':700,
                       'height':600};

        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>

  <body>
    <!--Div that will hold the pie chart-->
    <div id="chart_div" style="width:900px; height: 800px;"></div>
  </body>
</html>

Qualquer ajuda será apreciada. E estou executando SunOS

bash-3.00$ uname -a
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc
    
por arsenal 22.08.2012 / 23:10

1 resposta

3

Você não pode fazer isso com texto / email simples. Para incorporar diretamente esse html na mensagem de email, só funcionará se o software cliente de email de recebimento suportar JavaScript. Não tenho conhecimento de nenhum que faça isso.

Você basicamente tem duas opções. A primeira é fazer com que o software gráfico produza um arquivo de imagem que possa ser incorporado em um email em HTML. Essa imagem será apresentada no email no local em que ela está incorporada. A segunda é incluir um link em um email em HTML que apresentará o gráfico. Isso provavelmente exigirá que um navegador seja aberto para obter o conteúdo real.

Com a primeira opção, você teria que criar a mensagem de email usando Content-Type: multipart/related type="multipart/alternative" , incluindo pelo menos duas partes, a primeira do tipo text/html e a segunda do tipo image/<whatevertypeyourimageis> . Consulte a seção "Inclusão de imagens" nesta página para obter mais informações sobre como fazer isso.

Com a segunda opção, existem duas abordagens diferentes. A primeira é colocar uma página genérica que aceite dados codificados na URL e renderize a página de acordo. A segunda é colocar uma página única para cada conjunto de dados.

    
por 14.09.2012 / 19:41

Tags