× Linguagem de Programação ADVPL

Perguntas enviar email com arquivo anexado

Mais
12 anos 4 meses atrás - 12 anos 4 meses atrás #2553 por Vcrinfo
Preciso enviar email de orçamento para o cliente e anexar o orçamento no formato PDF

Alguem pode me auxiliar

Faltou um detalhe, preciso gravar o arquivo em PDF e depois enviar
Ultima edição: 12 anos 4 meses atrás por Vcrinfo.

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás #2555 por lalberto
Vera segue uma função com exemplo de envio de anexo, no parametro anexo vc passa o local e nome do arquivo.

por exemplo 'orcamento.pdf'


U_EnvMail('Orcamento', 'segue orcamento tralallalaal', 'Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.', '', 'orcamento.pdf', Nil, Nil)

User Function EnvMail(_cSubject, _cBody, _cMailTo, _cCC, _cAnexo, _cConta, _cSenha)
Local _cMailS := GetMv("MV_RELSERV")
Local _cAccount := IIf(_cConta=Nil,GetMV("MV_RELACNT"),_cConta)
Local _cPass := IIf(_cSenha=Nil,GetMV("MV_RELPSW"),_cSenha)
Local _cSenha2 := GetMV("MV_RELPSW")
Local _cUsuario2 := GetMV("MV_RELACNT")
Local lAuth := GetMv("MV_RELAUTH",,.F.)

ConOut("Enviando e-mail - " + _cSubject + " - para " + _cMailTo)

Connect Smtp Server _cMailS Account _cAccount Password _cPass RESULT lResult

If lAuth // Autenticacao da conta de e-mail
lResult := MailAuth(_cUsuario2, _cSenha2)
If !lResult
ConOut("Nao foi possivel autenticar a conta - " + _cUsuario2)
Return()
EndIf
EndIf

_xx := 0

lResult := .F.

do while !lResult

If !Empty(_cAnexo)
Send Mail From _cAccount To _cMailTo CC _cCC Subject _cSubject Body _cBody ATTACHMENT _cAnexo RESULT lResult
Else
Send Mail From _cAccount To _cMailTo CC _cCC Subject _cSubject Body _cBody RESULT lResult
Endif

_xx++
if _xx > 2
Exit
Else
Get Mail Error cErrorMsg
ConOut(cErrorMsg)
EndIf
EndDo

Return

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás #2556 por alyson
Respondido por alyson no tópico Re: enviar email com arquivo anexado
#include "TOTVS.CH"
user Function EMail()

Local oServer
Local oMessage
Local nNumMsg := 0
Local nTam := 0
Local nI := 0
//Cria a conexão com o server STMP ( Envio de e-mail )
oServer := TMailManager():New()
oServer:Init( "", 10.10.20.230/*endereco do serv email*/, ""/*login*/, ""/*senha*/, 0, 25 )
//seta um tempo de time out com servidor de 1min I
If oServer:SetSmtpTimeOut( 60 ) != 0
Conout( "Falha ao setar o time out" )
Return .F.
EndIf
//realiza a conexão SMTP
If oServer:SmtpConnect() != 0
Conout( "Falha ao conectar" )
Return .F.
EndIf
//Apos a conexão, cria o objeto da mensagem
oMessage := TMailMessage():New() //Limpa o objeto
oMessage:Clear()
//Popula com os dados de envio
oMessage:cFrom := "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo." // emeio de envio
oMessage:cTo := "receber@gmail.com.br,receber2@gmail.com" // emails que vai receber
oMessage:cCc := ""
oMessage:cBcc := ""
oMessage:cSubject := "Teste de Email"
msg:= "mensagem q aparece no corpo do email"
msg+= "mensagem q aparece no corpo do email"
msg+= "mensagem q aparece no corpo do email"
oMessage:cBody := msg

//Adiciona um attach anexa arquivo ele pega o anexo dentro da pasta Workflow fica no mesmo nivel que a pasta apo
If oMessage:AttachFile( "\Workflow\arquivo.txt" ) < 0
Conout( "Erro ao atachar o arquivo" )
Return .F.
Else
//adiciona uma tag informando que é um attach e o nome do arq
oMessage:AddAtthTag( 'Content-Disposition: attachment; filename=arquivo.txt')
EndIf */
//Envia o e-mail

If oMessage:Send( oServer ) != 0
Conout( "Erro ao enviar o e-mail" )
Return .F.
EndIf
//Desconecta do servidor
If oServer:SmtpDisconnect() != 0
Conout( "Erro ao desconectar do servidor SMTP" )
Return .F.
EndIf

Alert("chegou ao final da rotina ")
Return .T.

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 1 mês atrás #7278 por jrBrittes
Iae blz to com uma dificuldade de enviar o e-mail usando G-mail, pois ele pede autenticação.

lResult := MailAuth(cEmail,cPass)

Uso essa função para autenticar mais ela não tem parametros de porta.

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 1 mês atrás #7279 por lalberto
José tenta usar este exemplo, nele você poderá informar qual a porta de envio no smtp.

User Function MHDEnvMail(cDe,cPara,cAssunto, cCorpo)
local oServer := Nil
local oMessage := Nil
local nErr := 0


local cPopAddr := AllTrim(GETMV("MV_MHDSPO")) // Endereco do servidor POP3
local cSMTPAddr := Iif(!Empty(AllTrim(GETMV("MV_MHDSTP"))),AllTrim(GETMV("MV_MHDSTP")),AllTrim(GETMV("MV_RELSERV"))) // Endereco do servidor SMTP
local cPOPPort := Val(GETMV("MV_MHDPPO")) // Porta do servidor POP
local cSMTPPort := Val(GETMV("MV_MHDPSM")) // Porta do servidor SMTP
local cUser := Iif(!Empty(AllTrim(GETMV("MV_CMEMAS"))),AllTrim(GETMV("MV_CMEMAS")),AllTrim(GetMV("MV_RELACNT"))) // Usuario que ira realizar a autenticacao
local cPass := Iif(!Empty(AllTrim(GetMV("MV_CMEMPS"))),AllTrim(GetMV("MV_CMEMPS")),AllTrim(GETMV("MV_RELAPSW"))) // Senha do usuario
local nSMTPTime := 60 // Timeout SMTP

Private cTabCham := GetMV("MV_MHDCHA") // Alias tabela de Chamados
Private cCmpCha := Right(cTabCham,2)


// Instancia um novo TMailManager
oServer := tMailManager():New()

// Usa SSL na conexao
oServer:setUseSSL(GetMv("MV_RELAUTH",,.F.))

// oServer:SetUseTLS(.t.)

// Inicializa
oServer:init(cPopAddr, cSMTPAddr, cUser, cPass, cPOPPort, cSMTPPort)

// Define o Timeout SMTP
if oServer:SetSMTPTimeout(nSMTPTime) != 0
Alert("[ERROR]Falha ao definir timeout")
return .F.
endif

// Conecta ao servidor
nErr := oServer:smtpConnect()
if nErr <> 0
Alert("[ERROR]Falha ao conectar: " + oServer:getErrorString(nErr))
oServer:smtpDisconnect()
return .F.
endif

// Realiza autenticacao no servidor
nErr := oServer:smtpAuth(cUser, cPass)
if nErr <> 0
Alert("[ERROR]Falha ao autenticar: " + oServer:getErrorString(nErr))
oServer:smtpDisconnect()
return .F.
endif

// Cria uma nova mensagem (TMailMessage)
oMessage := tMailMessage():new()
oMessage:clear()
oMessage:cFrom := cDe //"Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
oMessage:cTo := cPara //"Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
// oMessage:cCC := "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."

// Manda Email para Mim Com até 10 Chamados Registrados

If (cTabCham)->(RecCount()) <= 10
oMessage:cBCC := "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
Endif
oMessage:cSubject := cAssunto //"Assunto"
oMessage:cBody := cCorpo //"Corpo do e-mail"

// Envia a mensagem
nErr := oMessage:send(oServer)
if nErr <> 0
Alert("[ERROR]Falha ao enviar: " + oServer:getErrorString(nErr))
oServer:smtpDisconnect()
return .F.
endif

// Disconecta do Servidor
oServer:smtpDisconnect()

return .T.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 1 mês atrás #7281 por jrBrittes
tentei ele também não autentico, passeai a porta 465 que eles usam aqui.

retorna codigo 54 sempre que tento.

Tentei assim
oServer:init("",alltrim(cSMTPAddr), alltrim(cUser), Alltrim(cPass),,465)

Assim
oServer:init("",cSMTPAddr), cUser, cPass,,465)

Nada sem sucesso com o gmail esta dificil.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.208 segundos
Joomla templates by a4joomla