Como inserir uma imagem no corpo de um e-mail com a classe TMailMessage()?
Produto: | Protheus ADVPL |
Versões: | P12.1.17 |
Ocorrência: | Quando necessária a inclusão de uma imagem no corpo de um e-mail |
Ambiente: | P12.1.17 |
Passo a passo: | Quando desejado efetuar a inserção de uma imagem no corpo de um e-mail, é necessário que na tag <img> seja passado o caminho completo do arquivo e não o caminho relativo (root patch). CAMINHO COMPLETO (CORRETO) sText := "<h1 style='color: blue;'>Teste de envio de e-mail com a classe TMailManager</h1>" sText += "<img src='c:\totvs\protheus\protheus_data\images\totvs_logo.png' alt='totvs_logo' height='100' width='100'>" oMessage:cBody := sText CAMINHO RELATIVO (INCORRETO) sText := "<h1 style='color: blue;'>Teste de envio de e-mail com a classe TMailManager</h1>" sText += "<img src='\images\totvs_logo.png' alt='totvs_logo' height='100' width='100'>" oMessage:cBody := sText AVISO (LINUX) Em caso de ambientes Linux, a sintaxe do caminho deve respeitar a regra de case sensitive. Segue abaixo um exemplo de fonte para envio de e-mail com anexo de imagem: T37SNDMAIL.prw #Include "totvs.ch" #Include "parmtype.ch" User Function T37SNDMAIL() Local oServer := NIL Local oMessage := NIL Local lRet := .T. Local sText := "" Local sMailSMTP := "" Local sMailUser := "" Local sMailPasswd := "" // TOTVS_LOGO.PNG DISPONÍVEL NO LINK: https://bit.ly/2JObJ03 // PREPARA AMBIENTE SEM ABERTURA DE TELA RPCSetEnv("99", "01", "Administrador", " ") sMailSMTP := SuperGetMV("MV_MSMTP", .F.) // VALOR ARMAZENADO POR SEGURANÇA sMailUser := SuperGetMV("MV_MUSER", .F.) // VALOR ARMAZENADO POR SEGURANÇA sMailPasswd := SuperGetMV("MV_MPASSWD", .F.) // VALOR ARMAZENADO POR SEGURANÇA oServer := TMailManager():New() oServer:Init("", sMailSMTP, sMailUser, sMailPasswd, 0, 25) If (oServer:SetSMTPTimeOut(60) != 0) ConOut(Repl("-", 80)) ConOut(PadC("Falha ao configurar o timeout", 80)) ConOut(Repl("-", 80)) lRet := .F. EndIf If (oServer:SMTPConnect() != 0) ConOut(Repl("-", 80)) ConOut(PadC("Falha ao realizar a conexão SMTP", 80)) ConOut(Repl("-", 80)) lRet := .F. EndIf oMessage := TMailMessage():New() oMessage:Clear() // INSERE IMAGEM NO CORPO DA MENSAGEM sText := "<h1 style='color: blue;'>Teste de envio de e-mail com a classe TMailManager</h1>" sText += "<img src='C:\TOTVS\PROTHEUS_1217A\X32A\protheus_data\images\TOTVS_LOGO.png' alt='TOTVS_LOGO' height='100' width='100'>" oMessage:cFrom := sMailUser + "@totvs.com.br" oMessage:cTo := sMailUser + "@totvs.com.br" oMessage:cSubject := "E-mail com imagem em anexo" oMessage:cBody := sText If (oMessage:Send(oServer) != 0) ConOut(Repl("-", 80)) ConOut(PadC("Erro ao enviar o e-mail", 80)) ConOut(Repl("-", 80)) lRet := .F. EndIf If (oServer:SMTPDisconnect() != 0) ConOut(Repl("-", 80)) ConOut(PadC("Erro ao disconectar do servidor SMTP", 80)) ConOut(Repl("-", 80)) lRet := .F. EndIf If (lRet == .T.) ConOut(Repl("-", 80)) ConOut(PadC("E-mail enviado com sucesso!", 80)) ConOut(Repl("-", 80)) EndIf RPCClearEnv() Return NIL |
Observações: | • Ocorrência analisada, atendida e solucionada no ticket: 2756394 • Classe TMailMessage(): http://tdn.totvs.com/display/tec/Classe+TMailMessage • Classe TMailManager(): http://tdn.totvs.com/display/tec/Classe+TMailManager |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas