Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: 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.