- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Envio de vários arquivos por email com a classe TMailManager
×
Linguagem de Programação ADVPL
Perguntas Envio de vários arquivos por email com a classe TMailManager
- RonaldoLopes
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 478
- Obrigados Recebidos: 2
11 anos 8 meses atrás #13067
por RonaldoLopes
Boa noite alguém já conseguiu enviar multiplos arquivos por email?
Utilizei a classe TMailManager para tal, adicionei em um array os arquivos e mesmo assim não envia.
Faz tudo certo, conecta, ao servidor mas na hora de enviar..
Acredito que está errado a forma que envia o array.
Fiz dessa forma:
//adiciona os arquivos a um array
Local aFiles := Directory(cPathLocal + Alltrim("*.*"))
//para fazer o envio
nRet := oMail:SendMail(cEmailFrom,;
cEmailTo ,;
cAssunto,;
cCorpoM,;
"",;
"",;
aFiles,;//<- passa o array com itens
0)
Documentação
tdn.totvs.com/display/tec/TMailManager
Utilizei a classe TMailManager para tal, adicionei em um array os arquivos e mesmo assim não envia.
Faz tudo certo, conecta, ao servidor mas na hora de enviar..
Acredito que está errado a forma que envia o array.
Fiz dessa forma:
//adiciona os arquivos a um array
Local aFiles := Directory(cPathLocal + Alltrim("*.*"))
//para fazer o envio
nRet := oMail:SendMail(cEmailFrom,;
cEmailTo ,;
cAssunto,;
cCorpoM,;
"",;
"",;
aFiles,;//<- passa o array com itens
0)
Documentação
tdn.totvs.com/display/tec/TMailManager
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 8 meses atrás #13069
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 Envio de vários arquivos por email com a classe TMailManager
Cara realmente está certo, vc só precisa ver quantos arquivos estão entrando neste vetor, e o tamanho dos mesmos, pois vi que vc colocou *.* ou seja, todos os arquivos do diretório.
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
11 anos 8 meses atrás #13074
por jrBrittes
Respondido por jrBrittes no tópico Envio de vários arquivos por email com a classe TMailManager
Entao eu zipei os arquivos antes de enviar.
E depois eu copio a pasta Zip.
/*
Função : fMail
Tipo : Função de usuário
Descrição : Envio de arquivo por e-mail
Parâmetros :
Retorno :
Atualizações:
- 20/10/2012 - Brittes - Construção Inicial
*/
Static Function fEnvMail(sGDe,sGPara,sGAss,cAnexo,cMMsg)
local oServer := Nil
local oMessage := Nil
local nErr := 0
Local cFrom := sGDe
Local cTo := sGPara
Local cCC := ""
Local cSubject := sGAss
local cPopAddr := ""
local cSMTPAddr := GetNewPar("MV_YSMTP" ,"smtp.gmail.com")
local cPOPPort := GetNewPar("MV_YPORTPOP" ,"995")
local cSMTPPort := GetNewPar("MV_YPORTSMT" ,"465")
local cUser := GetNewPar("MV_YUSER" ,"Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo." )
local cPass := //retirado do fonte para segurança
local nSMTPTime := 60 // Timeout SMTP
// Instancia um novo TMailManager
oServer := tMailManager():New()
// Usa SSL na conexao
oServer:setUseSSL(.T.)
// Inicializa
oServer:init("",alltrim(cSMTPAddr), alltrim(cUser), Alltrim(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 := cFrom
oMessage:cTo := cTo
oMessage:cSubject := cSubject
oMessage:cBody := ""
//Copia arquivos do remote local para o servidor, compactando antes de transmitir
CpyT2S( cAnexo, "\Certificados")
//Adiciona um attach anexa arquivo ele pega o anexo dentro da pasta certificados na raiz do servidor //GetSrvProfString("RootPath","")
nErr := oMessage:AttachFile("\Certificados\certificados.rar" )
If nErr < 0
Alert("[ERROR]Falha ao Anexar: " + oServer:getErrorString(nErr))
Return .F.
Endif
// 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.
E depois eu copio a pasta Zip.
/*
Função : fMail
Tipo : Função de usuário
Descrição : Envio de arquivo por e-mail
Parâmetros :
Retorno :
Atualizações:
- 20/10/2012 - Brittes - Construção Inicial
*/
Static Function fEnvMail(sGDe,sGPara,sGAss,cAnexo,cMMsg)
local oServer := Nil
local oMessage := Nil
local nErr := 0
Local cFrom := sGDe
Local cTo := sGPara
Local cCC := ""
Local cSubject := sGAss
local cPopAddr := ""
local cSMTPAddr := GetNewPar("MV_YSMTP" ,"smtp.gmail.com")
local cPOPPort := GetNewPar("MV_YPORTPOP" ,"995")
local cSMTPPort := GetNewPar("MV_YPORTSMT" ,"465")
local cUser := GetNewPar("MV_YUSER" ,"Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo." )
local cPass := //retirado do fonte para segurança
local nSMTPTime := 60 // Timeout SMTP
// Instancia um novo TMailManager
oServer := tMailManager():New()
// Usa SSL na conexao
oServer:setUseSSL(.T.)
// Inicializa
oServer:init("",alltrim(cSMTPAddr), alltrim(cUser), Alltrim(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 := cFrom
oMessage:cTo := cTo
oMessage:cSubject := cSubject
oMessage:cBody := ""
//Copia arquivos do remote local para o servidor, compactando antes de transmitir
CpyT2S( cAnexo, "\Certificados")
//Adiciona um attach anexa arquivo ele pega o anexo dentro da pasta certificados na raiz do servidor //GetSrvProfString("RootPath","")
nErr := oMessage:AttachFile("\Certificados\certificados.rar" )
If nErr < 0
Alert("[ERROR]Falha ao Anexar: " + oServer:getErrorString(nErr))
Return .F.
Endif
// 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.
Por favor Acessar ou Registrar para participar da conversa.
- RonaldoLopes
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 478
- Obrigados Recebidos: 2
11 anos 8 meses atrás #13086
por RonaldoLopes
Respondido por RonaldoLopes no tópico Envio de vários arquivos por email com a classe TMailManager
Cara, o usuário não vai ter interação com os arquivos, eles precisam ser enviados logo após gerado.
Uma solução seria compactar, mas como faço isso?
Vlw
Uma solução seria compactar, mas como faço isso?
Vlw
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 7 meses atrás #13159
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 Envio de vários arquivos por email com a classe TMailManager
Cara mas qual o tamanho deste anexo estamos falando ? que eu saiba não tem limite, mas precisa ver realmente o tamanho do arquivo, acho que deve ser esse seu problema.
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.
- RonaldoLopes
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 478
- Obrigados Recebidos: 2
11 anos 7 meses atrás - 11 anos 7 meses atrás #13167
por RonaldoLopes
Respondido por RonaldoLopes no tópico [RESOLVIDO] Envio de vários arquivos por email com a classe TMailManager
Resolvi, ao invés de enviar o array com os dados, passo para o atach da seguinte forma:
For nCount := 1 To Len(aFiles)
CpyT2S (cPath+aFiles[nCount,1], GetSrvProfString('StartPath','') + 'certificados\', .F. )
oMessage:AttachFile(GetSrvProfString('StartPath','') +'certificados\'+aFiles[nCount,1])
oMessage:AddAttHTag( 'Content-ID: <ID_conf_'+aFiles[nCount,1]+'>' )
Next nCount
Onde aFiles está carregado com meus arquivos.
For nCount := 1 To Len(aFiles)
CpyT2S (cPath+aFiles[nCount,1], GetSrvProfString('StartPath','') + 'certificados\', .F. )
oMessage:AttachFile(GetSrvProfString('StartPath','') +'certificados\'+aFiles[nCount,1])
oMessage:AddAttHTag( 'Content-ID: <ID_conf_'+aFiles[nCount,1]+'>' )
Next nCount
Onde aFiles está carregado com meus arquivos.
Ultima edição: 11 anos 7 meses atrás por lalberto.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Envio de vários arquivos por email com a classe TMailManager
Tempo para a criação da página:0.145 segundos