Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Enviar Email

Eu procurei aqui na comunidade, mas achei um script para ser executado via Macro. Mas aqui nao funcionou. Alguem ja enviou email pelo qlikview??? E se sim, alguem ja conseguiu fazer isso após executar o script???

Para enviar email achei o seguinte código

function mailrapport(teste)

    Dim objEmail

    Const cdoSendUsingPort = 2     ' Send the message using SMTP

    Const cdoAnonymous = 0     'Do not authenticate

    Const cdoBasic = 1         'basic (clear-text) authentication

    Const cdoNTLM = 2         'NTLM

    SMTPServer =  "Seuemail@gmail.com"

    Const SMTPPort = 25                 ' Port number for SMTP

    Const SMTPTimeout = 60              ' Timeout for SMTP in seconds

    'Sending mail

    Set objEmail = CreateObject("CDO.Message")

    Set objConf = objEmail.Configuration

    Set objFlds = objConf.Fields

    With objFlds

        '---------------------------------------------------------------------

           ' SMTP server details

           .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort

           .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer

           .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoAnonymous

        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort

        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False

          .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout

           .Update

        '---------------------------------------------------------------------

    End With

    objEmail.To = "Seuemail@gmail.com"      'Email Recipient

    objEmail.From = "Seuemail@gmail.com"                        'Email Sender

    objEmail.Subject = "The name of the report"                        ' Subject

    objEmail.TextBody = "some text in the body of the mail"        'Text Body         

    objEmail.AddAttachment = Nothing       ' Attachement

    objEmail.Send

    Set objFlds = Nothing

    Set objConf = Nothing

    Set objEmail = Nothing

end function

21 Replies
Not applicable
Author

se possível manda mesmo

eu to querendo fazer algo desse tipo

Not applicable
Author

é possivel sim, eu já fiz isso.

Not applicable
Author

poderia me mandar o código ou o qvw por favor?

desde já agradeço

ruzivao1980
Creator
Creator

Leonardo... teria como vc me enviar um exemplo de como vc fez, estou precisando muito e não estou conseguindo fazer.... muito obrigado desde ja....

Anonymous
Not applicable
Author

Preciso dessa solução também.

lucianosv
Specialist
Specialist

Funciona sim.

Boa tarde.

Segue script abaixo:

Function Mail_Report()

Set obj = ActiveDocument.ActiveSheet.SheetObjects("TX63")
Set obj1 = ActiveDocument.ActiveSheet.SheetObjects("TX64")
Set obj2 = ActiveDocument.ActiveSheet.SheetObjects("CH42")
Set obj3 = ActiveDocument.ActiveSheet.SheetObjects("CH44")
'Export entire Sheet
'Set obj = ActiveDocument.ActiveSheet
obj.ExportBitmapToFile "D:\\TestImage.jpg"
obj1.ExportBitmapToFile "D:\\TestImage1.jpg"
'obj2.ExportBitmapToFile "D:\\TestImage2.jpg"
obj3.ExportBitmapToFile "D:\\TestImage3.jpg"

Dim objEmail

Const cdoSendUsingPort = 2
Const cdoAnonymous = 1
Const cdoBasic = 1
Const cdoNTLM = 2

SMTPServer = "smtp.gmail.com"

Const SMTPPort = 465
Const SMTPTimeout = 60

Set objEmail = CreateObject("CDO.Message")
Set objConf = objEmail.Configuration
Set objFlds = objConf.Fields
  set doc = ActiveDocument
set mySelections = doc.fields("Enviar_email_para").GetSelectedValues

for i = 0 to mySelections.Count - 1
email = email & mySelections.Item(i).text & ";"
next

destinatarios = email & ";XXXXXX@XXXX.com.br;XXXX.XXX@XXXXcom.br"
msgbox(email)

With objFlds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoAnonymous
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "XXXXX@ig.com.br"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "XXXXX"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout
.Update
End With

objEmail.To = destinatarios
objEmail.From = "XXXX@ig.com.br"
objEmail.Bcc = "XXXX@ig.com.br" 'com cópia oculta
objEmail.Subject = "Relatório Diário"    

HTML = "<!DOCTYPE HTML PUBLIC ""-//IETF//DTD HTML//EN"">" & chr(13) & chr(10)
HTML = HTML & "<html>"
HTML = HTML & "<head>"
HTML = HTML & "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">"
HTML = HTML & "<title>Relatório!</title>"
HTML = HTML & "</head>"
HTML = HTML & "<body bgcolor=""#FFFFFF"">"

'html tag to include image
HTML = HTML & "<p>Prezada XXX,"
HTML = HTML & "<p>Segue listagem."
HTML = HTML & "<p>"
HTML = HTML & "<p>   <img src=""cid:TestImage.jpg"" > <br>"
HTML = HTML & "<p>   <img src=""cid:TestImage1.jpg"" > <p>"
HTML = HTML & "<p>   <img src=""cid:TestImage2.jpg"" > <P>"
HTML = HTML & "<p>   <img src=""cid:TestImage3.jpg"" > <br>"
HTML = HTML & "<p>"
HTML = HTML & "</body>"
HTML = HTML & "</html>"

'code to embed the image by uploading into the mail body
Set objBP = objEmail.AddRelatedBodyPart("D:\\TestImage.jpg", "TestImage.jpg", CdoReferenceTypeName)
objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<TestImage.jpg>"
objBP.Fields.Update
Set objBP1 = objEmail.AddRelatedBodyPart("D:\\TestImage1.jpg", "TestImage1.jpg", CdoReferenceTypeName)
objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<TestImag1e1.jpg>"
objBP.Fields.Update
' Set objBP2 = objEmail.AddRelatedBodyPart("D:\\TestImage2.jpg", "TestImage2.jpg", CdoReferenceTypeName)
'    objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<TestImag1e2.jpg>"
'    objBP.Fields.Update
'Set objBP3 = objEmail.AddRelatedBodyPart("D:\\TestImage3.jpg", "TestImage3.jpg", CdoReferenceTypeName)
'objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<TestImag1e3.jpg>"
'objBP.Fields.Update

objEmail.HTMLBody = HTML

objEmail.Send


Set objFlds = Nothing
Set objConf = Nothing
Set objEmail = Nothing

msgbox("Relatório enviado!")

end function

Os objetosabaixo devem estar no qvw:

"TX63"
"TX64"
"CH42"
"CH44"


O servidor de email precisa estar configurado no server, caso seja executado nele. No restante é só modificar e-mails, portas e senhas, além de dar permissão de execução de macro para o qvw.

Not applicable
Author

Fernando,

Alguma configuração no servidor é necessária ou é só criar esta function e as variáveis?

Abraço

rafaelmarinho05
Contributor III
Contributor III

Boa tarde Luciano Vasconcelos,

Amigo estou tentando implementar o disparador de email segundo seu código, fiz os ajustes aqui e me aparece o seguinte erro: 'set mySelections = doc.fields("Enviar_email_para").GetSelectedValues' você sabe me informar como posso sanar esse erro ?

Grato

lucianosv
Specialist
Specialist

Imagino que você não tenha um campo "Enviar_email_para", mas isso não é uma afirmação, só um pensamento.

rafaelmarinho05
Contributor III
Contributor III

Boa tarde Luciano,

Só não entendi o contexto desse campo e aonde inseri-lo ou localiza-lo.