Versão atual:

Caracteres especiais em html

Galera boa Noite!

Estou com o seguinte problema estou montando uma rotina que ira disparar e-mail até aqui beleza isso já consegui fácil porem estou me deparando com problemas no corpo do e-mail que está no html convertendo de forma errônea colocando caracteres especiais onde já tentei altera o formato do cabeçalho para trata de forma correta mas não rola alguém sabe como resolver abaixo mando o fonte utilizado e os caractere que esta me ferrando.

Exemplo de como o email esta chegando : Caro cliente, visando melhor atendê-los, segue abaixo o(s) tìtulo(s) que estÃúo com vencimentos próximos .

ABAIXO O FONTE......

//Bibliotecas

#Include "Protheus.ch"



User Function zEnvMail(cPara, cAssunto, cCorpo, aAnexos, lMostraLog, lUsaTLS)
    Local aArea        := GetArea()
    Local nAtual       := 0
    Local lRet         := .T.
    Local oMsg         := Nil
    Local oSrv, oMessage         := Nil
    Local nRet         := 0
    Local cFrom        := Alltrim(GetMV("MV_RELACNT"))
   // Local cUser        := SubStr(cFrom, 1, At('@', cFrom)-1)
    Local cPass        := Alltrim(GetMV("MV_RELPSW"))
    Local cSrvFull     := Alltrim(GetMV("MV_RELSERV"))
    Local cServer      := Iif(':' $ cSrvFull, SubStr(cSrvFull, 1, At(':', cSrvFull)-1), cSrvFull)
    Local nPort        := Iif(':' $ cSrvFull, Val(SubStr(cSrvFull, At(':', cSrvFull)+1, Len(cSrvFull))), 587)
    Local nTimeOut     := GetMV("MV_RELTIME")
    Local cLog         := ""
    Default cPara      := "ROLIVEIRA@MI.COM.BR"
    Default cAssunto   := "COBRANCA "
    Default cCorpo     := corp()
    Default aAnexos    := {}
    Default lMostraLog := .F.
    Default lUsaTLS    := .T.

    //Se tiver em branco o destinatário, o assunto ou o corpo do email
    If Empty(cPara) .Or. Empty(cAssunto) .Or. Empty(cCorpo)
        cLog += "Boletos  cobrançA!" + CRLF
        lRet := .F.
    EndIf

    If lRet
        //Cria a nova mensagem
        oMsg := TMailMessage():New()
        oMsg:Clear()

        //Define os atributos da mensagem
        oMsg:cFrom    := cFrom
        oMsg:cTo      := cPara
        oMsg:cSubject := cAssunto
        oMsg:cBody    := cCorpo

        aAnexos := {}
        aAdd(aAnexos, "\atualiza\ORCFAT.zip")


        //Percorre os anexos
        For nAtual := 1 To Len(aAnexos)
            //Se o arquivo existir
            If File(aAnexos[nAtual])

                //Anexa o arquivo na mensagem de e-Mail
                nRet := oMsg:AttachFile(aAnexos[nAtual])
                If nRet < 0
                    cLog += "002 - Nao foi possivel anexar o arquivo '"+aAnexos[nAtual]+"'!" + CRLF
                EndIf

            //Senao, acrescenta no log
            Else
                cLog += "003 - Arquivo '"+aAnexos[nAtual]+"' nao encontrado!" + CRLF
            EndIf
        Next

        //Cria servidor para disparo do e-Mail
        oSrv := tMailManager():New()

        //Define se irá utilizar o TLS
        If lUsaTLS
            oSrv:SetUseTLS(.T.)
        EndIf

        //Inicializa conexão
        //nRet := oSrv:Init("", cServer, cUser, cPass, 0, nPort)
        nRet := oSrv:Init("", cServer, cFrom, cPass, 0, nPort)
        If nRet != 0
            cLog += "004 - Nao foi possivel inicializar o servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
            lRet := .F.
        EndIf

        If lRet
            //Define o time out
            nRet := oSrv:SetSMTPTimeout(nTimeOut)
            If nRet != 0
                cLog += "005 - Nao foi possivel definir o TimeOut '"+cValToChar(nTimeOut)+"'" + CRLF
            EndIf

            //Conecta no servidor
            nRet := oSrv:SMTPConnect()
            If nRet <> 0
                cLog += "006 - Nao foi possivel conectar no servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
                lRet := .F.
            EndIf

            If lRet
                //Realiza a autenticação do usuário e senha
                nRet := oSrv:SmtpAuth(cFrom, cPass)
                If nRet <> 0
                    cLog += "007 - Nao foi possivel autenticar no servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
                    lRet := .F.
                EndIf

                If lRet
                    //Envia a mensagem
                    nRet := oMsg:Send(oSrv)
                    If nRet <> 0
                        cLog += "008 - Nao foi possivel enviar a mensagem: " + oSrv:GetErrorString(nRet) + CRLF
                        lRet := .F.
                    EndIf
                EndIf

                //Disconecta do servidor
                nRet := oSrv:SMTPDisconnect()
                If nRet <> 0
                    cLog += "009 - Nao foi possivel disconectar do servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
                EndIf
            EndIf
        EndIf
    EndIf

  oMessage := TMailMessage():New()
  oMessage:Clear()
  xRet := oMessage:Send( oSrv )
  if xRet <> 0
    cMsg := "Could not send message: " + oSrv:GetErrorString( xRet )
    conout( cMsg )
  endif

  xRet := oSrv:SMTPDisconnect()
  if xRet <> 0
    cMsg := "Could not disconnect from SMTP server: " + oSrv:GetErrorString( xRet )
    conout( cMsg )
  endif

/*

    //Se tiver log de avisos/erros
    If !Empty(cLog)
        cLog := "zEnvMail - "+dToC(Date())+ " " + Time() + CRLF + ;
            "Funcao - " + FunName() + CRLF + CRLF +;
            "Existem mensagens de aviso: "+ CRLF +;
            cLog
        ConOut(cLog)

        //Se for para mostrar o log visualmente e for processo com interface com o usuário, mostra uma mensagem na tela
        If lMostraLog .And. ! IsBlind()
            Aviso("Log", cLog, {"Ok"}, 2)
        EndIf
    EndIf
 */
    RestArea(aArea)
Return lRet 

STATIC FUNCTION Corp()

PUBLIC cHtml :=''      
_cObs:= 'teste de  email'
cHtml := '<html> ' //+ENTER
//cHtml += '<head> ' //+ENTER Content-Type: text/html; charset=utf-8
cHtml += '   <meta http-equiv="X-UA-Compatible" content="IE=chrome">'
cHtml += '    <meta name="viewport" content="width=device-width, initial-scale=1">'
cHtml += '    <link rel="stylesheet" href="css/bootstrap.min.css">'
cHtml += '    <link rel="stylesheet" href="css/jquery.bootgrid.min.css">'
cHtml += '    <link rel="stylesheet" href="css/jquery-ui.css">'
cHtml += '    <script src="js/jquery.min.js"></script>'
cHtml += '    <script src="js/bootstrap.min.js"></script>'  
cHtml += '   <script src="js/jquery-1.12.4.js"></script>'
cHtml += '    <script src="js/jquery-ui.js"></script>'
cHtml += '    <script src="js/jquery.bootgrid.min.js"></script>R'
//cHtml += '</head> ' //+ENTER
cHtml += '<body bgcolor="#FFFFFF"> ' //+ENTER
cHtml += '<img align=Left src="http://www.Cliente.com.br/images/logo_niaz.jpg" width="230" height="32    " hspace="1">' //+ENTER
cHtml += '<p><b><font color="#000080" <font face="Arial" size="2">'//+ENTER
cHtml += '<pre>'//+ENTER
cHtml += ' <font face="Arial" size="2">'+Space(03)+SM0->M0_NOMECOM +'<BR> ' //+ENTER
cHtml += ' '+Space(03)+SM0->M0_ENDCOB +'<BR> ' //+ENTER
cHtml += ' '+Space(61)+AllTrim(SM0->M0_BAIRCOB)+' - '+AllTrim(SM0->M0_CIDCOB)+' - '+ AllTrim(SM0->M0_ESTCOB) +' - '+AllTrim(SM0->M0_CEPCOB) +'<BR> ' //+ENTER
cHtml += ' '+Space(61)+'Telefone '+ SM0->M0_TEL +' - '+ ' financeiro@teste.com.br </font>' //+ENTER
cHtml += '</pre>'//+ENTER                                                   
cHtml += '</font></b></p> '//+ENTER
cHtml += '<br> '//+ENTER

//cHtml += '<h2><p><b><font Color="#000080" face="Arial"><CENTER>Orcamento: '+'MV_PAR01'+' - Data Emissão: '+'Dtoc(SUA->UA_EMISSAO)'+' - Validade: 2 Dias</CENTER></font></b></p></h2> ' 
cHtml += '<div align="left"> ' //+ENTER
cHtml += '<table border=0 width=45% cellpadding="1"> ' //+ENTER
cHtml += '   <tr> ' //+ENTER                                                   
cHtml += '      <td bgcolor="#EEEEEE" align="left" width="150"><b><font face="Arial" size="2">Cliente:</font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#EEEEEE" align="left" width="1000"><font face="Arial" size="2">'+ "Pedido Faturado em nome de: "+ AllTrim(SA1->A1_NOME) + " <br>  CNPJ: " +;
                                                                                              Transform(Alltrim(SA1->A1_CGC),"@R 99.999.999/9999-99")+'</font></td> ' //+ENTER
cHtml += '   <tr> ' //+ENTER
cHtml += '      <td bgcolor="#EEEEEE" align="left" width="150"><b><font face="Arial" size="2">'+ OemToAnsi(' Endereço Fat.:')+ '</font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#EEEEEE" align="left" width="1000"><font face="Arial" size="2">'+SA1->A1_END + ",  " + SA1->A1_BAIRRO + ",  " + SA1->A1_MUN + ",  " + SA1->A1_EST + "<BR>CEP: " + SA1->A1_CEP+'</font></td> ' //+ENTER
cHtml += '   <tr> ' //+ENTER
cHtml += '      <td bgcolor="#EEEEEE" align="left" width="150"><b><font face="Arial" size="2">'+ OemToAnsi('Observação:')+ ' </font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#EEEEEE" align="left" width="800"><font face="Arial" size="2">'+_cObs+'</font></td> '      //+ENTER

cHtml += '</table> ' //+ENTER

cHtml += '<br>' //+ENTER
    cHtml += '<br><br>' //+ENTER
    cHtml += '<p><b><font Color="#000080" face="Arial"> Valide sua nota diretamente  no <a href="https://nfe.fazenda.sp.gov.br/ConsultaNFe/consulta/publica/ConsultarNFe.aspx">SEFAZ:</a></p>  </font></b></p> ' //+ENTER

    cHtml += '<font face="Arial" size="2">'+'Caro cliente, visando melhor'+ OemToAnsi(' atendê-los')+', segue abaixo o(s)  '+ OemToAnsi(' título(s)  ')+'que   '+ OemToAnsi(' estão  ')+'com vencimentos <BR> '+ OemToAnsi('  próximos  ')+'.'+'</font> ' ////+ENTER

//https://nfe.fazenda.sp.gov.br/ConsultaNFe/consulta/publica/ConsultarNFe.aspx

cHtml += '<br><br>' //+ENTER

cHtml += '<p><b><font Color="#000080" face="Arial">Titulos:</font></b></p> ' //+ENTER
cHtml += '<table border=0 width=45% cellpadding="2"> ' //+ENTER
cHtml += '   <tr> ' //+ENTER
cHtml += '      <td bgcolor="#C0C0C0" align="center" width="20%" ><b><font face="Arial" size="2">TITULO</font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#C0C0C0" align="center" width="20%" ><b><font face="Arial" size="2">PARCELA</font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#C0C0C0" align="center" width="20%" ><b><font face="Arial" size="2">'+ EncodeUTF8("EMISSÃO", "cp1252") +' </font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#C0C0C0" align="center" width="20%" ><b><font face="Arial" size="2">VENCIMENTO</font></b></td> ' //+ENTER
cHtml += '      <td bgcolor="#C0C0C0" align="center" width="20%" ><b><font face="Arial" size="2">VALOR</font></b></td> ' //+ENTER

cHtml += '   </tr> ' //+ENTER
cHtml += '   <tr> ' //+ENTER

//_aLstDados := aClone(_aDados[03])'+ OemToAnsi(' atendê-los')+'
//_aLstDados := aClone(ASort(_aDados[03],,,{|x,y|x[4]+x[1]+x[2]<y[4]+y[1]+y[2]}))
//c_Anexo := "" //MGomes

cHtml += '   </tr> ' //+ENTER
cHtml += '</table> ' //+ENTER
//cHtml += '<table border=0 width=100% cellpadding="2"> ' 
//cHtml += '   <tr align="left" bgcolor="#C0C0C0"> ' 
//cHtml += '   <td bgcolor="#EEEEEE" align="center" width="60"><font face="Arial" size="2">'+Transform(nTotalGeral,"@E 9,999,999.99")+'</font></td> ' 
//cHtml += '   </tr> ' 
//cHtml += '</table> ' 
cHtml += '<br>' //+ENTER
//cHtml += '<font face="Arial" size="2"> A Cliente agradece sua pontualidade e preferência.</font><br><br>' //+ENTER
cHtml += '<font face="Arial" size="2"> A '+Space(03)+SM0->M0_NOMECOM + ' agradece sua '+  EncodeUTF8("preferência", "cp1252")+ '</font><br><br>'



cHtml += '<font face="Arial" size="2"> Em caso de duvidas entre em contato com nosso departamento financeiro.</font><br><br>' //+ENTER

cHtml += '<font face="Arial" size="2"> Att.</font><br><br>' //+ENTER

cHtml += '<font face="Arial" size="2">'+Space(03)+SM0->M0_NOMECOM + ' </font><br>' //+ENTER
cHtml += '<font face="Arial" size="2"> Depto  '+ OemToAnsi(' Financeiro ')+' </font><br>' //+ENTER
cHtml += '<font face="Arial" size="2"> Telefone: (11)   R. 204 </font><br>' //+ENTER
cHtml += '<font face="Arial" size="2"> '+ OemToAnsi('financeiro@teste.com.br ')+' </font><br>' //+ENTER

cHtml += '</div> '         //+ENTER
cHtml += '<U> '         //+ENTER
cHtml += '<br><hr> '     //+ENTER
cHtml += '</body> '     //+ENTER
cHtml += '</html> '     //+ENTER
RETURN(cHtml)

Versões (2):

Ver a versão formatada

Caracteres especiais em html

  • criado 12 de Jun de 2021

Comentário

new question