none
Enviar e-mail utilizando o sp_OACreate formato html 8859-1 RRS feed

  • Pergunta

  • Pessoal

          Alguém, poderia me enviar pelo mesmo a estrutura básica do html ( iso-8859-1 ), pois estou com a rotina de enviar e-mail utilizando o sp_OACreate 'CDO.Message' e estou utilizando o formato de html HTMLBody, só que não estou sabendo montar a estrutura correta do html no formato ( iso-8859-1 ), agora caso alguém tem algum outro formato de html que consiga ser enviado por este componente eu puder me enviar a estrutura básica do html agradeço desde já.

    quinta-feira, 3 de outubro de 2019 16:16

Respostas

  • neibala, ISO-8859-1 não é um formato mas sim um conjunto de caracteres, assim como existe UTF-8, UTF-16, ASCII, BCD, EBCDIC etc.

    Quando se programa em HTML e o conjunto de caracteres utilizado é o ISO-8859-1, o que se faz é acrescentar
         <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

    no header do código HTML:

    <!-- código #1 -->
    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> texto do e-mail </body> </html>


    Sugestão de leitura: HTML <meta> charset Attribute.

     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz quinta-feira, 3 de outubro de 2019 23:21
    • Marcado como Resposta neibala quarta-feira, 9 de outubro de 2019 19:20
    quinta-feira, 3 de outubro de 2019 17:19
  • Neibala,

    Quando estamos implementando uma página HTML respeitando a estrutura de codificação e semântica de Código o correto é começar a definição da estrutura de Código com <HTML> e no final do Código definer </HTML>.

    No seu caso, você já tentou fazer desta forma:

    <HTML>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      </head>
      <body>
      texto do e-mail para ser enviado - Programação - Desenvolvimento 2019
      </body>
               <H3 style="text-align:center"> Auditoria de Classificação de Ocorrências </H3>
                 <br><p><i>Equipe de Planejamento e Estratégia, por gentileza validar as alterações na tabela de classificação.</i></p>
                 <small>
                        <b>RESUMO</b><br>
                        Data: <b> hoje </b><br>                    
                        Total de inconsistências: <b> 100 </b><br>
                 </small>
                 <HR>
                 <table style="width: 100%; text-align:center">
                        <tr>
                               <th style="background-color: #ff8080">Excluídos</th>
                               <th style="background-color: #ffd480">Alterados</th>
                               <th style="background-color: #93ffaa">Incluídos</th>
                        </tr>
                        <tr>
                               <td style="background-color: #ff9999"> 100</td>
                               <td style="background-color: #ffdd99"> 200</td>
                               <td style="background-color: #b3ffcc"> 300</td>
                        </tr>
                 </table>
                 </HR>
    </HTML>

    Veja o resultado que eu obtive na minha máquina:


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta neibala quarta-feira, 9 de outubro de 2019 19:20
    quinta-feira, 3 de outubro de 2019 22:30

Todas as Respostas

  • neibala, ISO-8859-1 não é um formato mas sim um conjunto de caracteres, assim como existe UTF-8, UTF-16, ASCII, BCD, EBCDIC etc.

    Quando se programa em HTML e o conjunto de caracteres utilizado é o ISO-8859-1, o que se faz é acrescentar
         <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

    no header do código HTML:

    <!-- código #1 -->
    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> texto do e-mail </body> </html>


    Sugestão de leitura: HTML <meta> charset Attribute.

     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz quinta-feira, 3 de outubro de 2019 23:21
    • Marcado como Resposta neibala quarta-feira, 9 de outubro de 2019 19:20
    quinta-feira, 3 de outubro de 2019 17:19
  • Neibala,

    Além das observações José Diz, ressalto que ao informar no header do arquivo qual o formato que representa a estrutura do mesmo, você estará facilitando o reconhecimento e interpretação por parte do software que estará fazendo a leitura e acesso ao mesmo.

    O mesmo se aplica para o chamado Enconding "Codificador", um exemplo básico que Podemos notar é no momento de salvar um arquivo no Bloco de Notas, temos justamente o botão enconding que nos permite especificar o formatador ou codificador da estrutura do mesmo.

    Veja a imagem abaixo:


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 3 de outubro de 2019 17:26
  • José Diz / Junior

          Agradeço as informações e veja em que parte eu poderia estar fazendo de forma incorreta, devido ser um texto html, pois o processo de envio está funcionando, quando seto para html, neste exemplo que foi passado não está chegando nada, conforme abaixo :

    1) Estou utilizando o componente 
    
    sp_OACreate 'CDO.Message' 
    
    
    2) Onde o envio da parte do HMTL está conforme abaixo :
    
    exec @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn,HTMLBody,  @xMSG 
    
    
    
    3) (Desta maneira não mostrou nada, ficou tudo em branco).
    
       DECLARE @xMSG VARCHAR(MAX) = '<html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      </head>
      <body>
      texto do e-mail para ser enviado - Programação - Desenvolvimento 2019
      </body>
    </html>' 
    
    4) (Já desta maneira mostrou apenas a mensagem ( Auditoria de Classificação de Ocorrências ) )
         DECLARE @xMSG VARCHAR(MAX) = '
                 <H3 style="text-align:center"> Auditoria de Classificação de Ocorrências </H3>
                 <br><p><i>Equipe de Planejamento e Estratégia, por gentileza validar as alterações na tabela de classificação.</i></p>
                 <small>
                        <b>RESUMO</b><br>
                        Data: <b> hoje </b><br>                    
                        Total de inconsistências: <b> 100 </b><br>
                 </small>
                 <HR>
                 <table style="width: 100%; text-align:center">
                        <tr>
                               <th style="background-color: #ff8080">Excluídos</th>
                               <th style="background-color: #ffd480">Alterados</th>
                               <th style="background-color: #93ffaa">Incluídos</th>
                        </tr>
                        <tr>
                               <td style="background-color: #ff9999"> 100</td>
                               <td style="background-color: #ffdd99"> 200</td>
                               <td style="background-color: #b3ffcc"> 300</td>
                        </tr>
                 </table>
                 </HR>
           ' 


    quinta-feira, 3 de outubro de 2019 18:46
  • Neibala,

    Quando estamos implementando uma página HTML respeitando a estrutura de codificação e semântica de Código o correto é começar a definição da estrutura de Código com <HTML> e no final do Código definer </HTML>.

    No seu caso, você já tentou fazer desta forma:

    <HTML>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      </head>
      <body>
      texto do e-mail para ser enviado - Programação - Desenvolvimento 2019
      </body>
               <H3 style="text-align:center"> Auditoria de Classificação de Ocorrências </H3>
                 <br><p><i>Equipe de Planejamento e Estratégia, por gentileza validar as alterações na tabela de classificação.</i></p>
                 <small>
                        <b>RESUMO</b><br>
                        Data: <b> hoje </b><br>                    
                        Total de inconsistências: <b> 100 </b><br>
                 </small>
                 <HR>
                 <table style="width: 100%; text-align:center">
                        <tr>
                               <th style="background-color: #ff8080">Excluídos</th>
                               <th style="background-color: #ffd480">Alterados</th>
                               <th style="background-color: #93ffaa">Incluídos</th>
                        </tr>
                        <tr>
                               <td style="background-color: #ff9999"> 100</td>
                               <td style="background-color: #ffdd99"> 200</td>
                               <td style="background-color: #b3ffcc"> 300</td>
                        </tr>
                 </table>
                 </HR>
    </HTML>

    Veja o resultado que eu obtive na minha máquina:


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta neibala quarta-feira, 9 de outubro de 2019 19:20
    quinta-feira, 3 de outubro de 2019 22:30
  • sp_OACreate 'CDO.Message'

    O comando acima cria instância do objeto OLE CDO.Message. Nunca utilizei essa forma de envio de e-mail.

    O que posso comentar é que o código HTML que enviei está completo e corretamente estruturado enquanto que o código HTML do item (4) de sua resposta é trecho de código HTML, utilizado no bloco <body>.

    ---

    Falta conhecer quais são as propriedades do objeto CDO.Message. No item (2) de sua resposta somente a propriedade HTMLBody é definida e provavelmente nela só é possível informar trechos de <body>. Por enquanto esqueça o código #1.

    Pesquisando pelas propriedades do objeto CDO.Message encontrei que através de objeto.BodyPart.Charset é possível definir o conjunto de caracteres. No item (1) você informa a criação de instância do objeto CDO.Message mas não informa qual o handler da instância criada; seria @pv_idMsgReturn?


    Encontrei tópicos de fóruns citando também HTMLBodyPart e TextBodyPart, mas ainda não encontrei a documentação oficial do objeto CDO.Message. Assim, não é possível confirmar qual é o nome correto da propriedade ou se há várias.

    Para testar:

    -- código #2 EXECUTE @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn, 'BodyPart.Charset', 'ISO-8859-1';
    SELECT @pv_idExecReturn;
    EXECUTE @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn, 'HTMLBodyPart.Charset', 'ISO-8859-1';
    SELECT @pv_idExecReturn;
    EXECUTE @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn, 'TextBodyPart.Charset', 'ISO-8859-1';
    SELECT @pv_idExecReturn;


    ---

    Além de CDO.Message, você cria instância de algum outro objeto CDO? Por exemplo, como é configurado o servidor de SMTP?

    Você criou instância do objeto OLE CDO.Configuration?



    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz sexta-feira, 4 de outubro de 2019 11:38
    sexta-feira, 4 de outubro de 2019 11:36
  • Junior / José Diz 

          As recomendações que vocês passaram realmente eu cheguei a utilizar em outros exemplos, mais quando começou a dar erro, acabei fazendo um exemplo bem didático para ter a certeza que pelo mesmo este básico estaria funcionando e vendo as suas dicas de estrutura, acabei identificando onde estava errado e por isto estava dando erro em todo o processo e era uma coisa bem simples, vendo agora, mais vendo a estrutura que vocês enviaram ajudou em muito a identificar melhor o local da dúvida.

        E enviando desta maneira deu certo, só tenho de agradecer a ajuda e atenção neste sentido.

    quarta-feira, 9 de outubro de 2019 19:04
  • José Diz

        Dando um retorno parcial das suas informações que são muito valida na questão do componente segue :

    (pois já consegui enviar agora)

    Instanciando o objecto

    exec @pv_idExecReturn = sp_OACreate 'CDO.Message', @pv_idMsgReturn OUT 

    Na questão da dúvida do @pv_idMsgReturn?

    É utilizando para capturar o código do erro do processo no momento. 

    E no caso do estilo para envio segue abaixo deste componente CDO.Message seria :

    HTMLBody ou TextBody

    exec @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn,HTMLBody,  @pv_dsMsgEmail

    E no caso do smtp seria +/- assim :

    exec @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn,'Configuration.Fields ("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value', 'False'

    exec @pv_idExecReturn = sp_OASetProperty @pv_idMsgReturn,'Configuration.Fields ("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value','587' 

    E a documentação deste componente ela é mais difícil mesmo de ser encontrada.

    Como deu certo agradeço toda a atenção e ajuda

    quarta-feira, 9 de outubro de 2019 19:19