- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- enviar email com arquivo anexado
×
Linguagem de Programação ADVPL
Perguntas enviar email com arquivo anexado
- Vcrinfo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 13
- Obrigados Recebidos: 0
12 anos 4 meses atrás - 12 anos 4 meses atrás #2553
por Vcrinfo
enviar email com arquivo anexado foi criado 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
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 4 meses atrás #2555
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: enviar email com arquivo anexado
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
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.
- alyson
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 118
- Obrigados Recebidos: 1
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.
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.
- jrBrittes
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
12 anos 1 mês atrás #7278
por jrBrittes
Respondido por jrBrittes no tópico Re: enviar email com arquivo anexado
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.
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 1 mês atrás #7279
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: enviar email com arquivo anexado
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.
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.
- jrBrittes
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
12 anos 1 mês atrás #7281
por jrBrittes
Respondido por jrBrittes no tópico Re: enviar email com arquivo anexado
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.
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- enviar email com arquivo anexado
Tempo para a criação da página:0.208 segundos