CEmail.cls
5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "CEmail"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' Classe responsável pelo envio de emails
'
'
Private emailDestinatario As String 'email de quem vai receber. p.ex. tec@nexusbr.com
Private emailRemetente As String 'nome de quem está enviando. p.ex. NEXUS <tec@nexusbr.com>
Private enderecoSMTP As String 'endereço smtp de envio. p.ex. para o GMail: smtp.gmail.com
Private portaSMTP As Integer 'porta de envio do email. p. ex. para o GMail: 465
Private usuarioSMTP As String 'usuário de login do smtp. p. ex. para o GMail: tec@nexusbr.com
Private senhaSMTP As String 'senha do sSmtpUser para acessar
Private SslSmtp As Boolean 'se é para enviar com segurança ou não. p. ex. para o GMail: True
' Envia um email genério
'
' sTo - email de quem vai receber. p.ex. tec@nexusbr.com
' sSubject - texto com o assunto do email
' sFrom - nome de quem está enviando. p.ex. NEXUS <tec@nexusbr.com>
' sBody - texto com o corpo do email
' sSmtpServer - endereço smtp de envio. p.ex. para o GMail: smtp.gmail.com
' iSmtpPort - porta de envio do email. p. ex. para o GMail: 465
' sSmtpUser - usuário de login do smtp. p. ex. para o GMail: tec@nexusbr.com
' sSmtpPword - senha do sSmtpUser para acessar
' sFilePath - caminho do arquivo que será anexado
' bSmtpSSL - se é para enviar com segurança ou não. p. ex. para o GMail: True
'
' Obs.: Ao debugar pode acontecer se estiver indo linha a linha de ele não enviar o email
'
Private Function SendMail(sTo As String, sSubject As String, sFrom As String, _
sBody As String, sSmtpServer As String, iSmtpPort As Integer, _
sSmtpUser As String, sSmtpPword As String, _
sFilePath As String, bSmtpSSL As Boolean) As String
On Error GoTo SendMail_Error:
Dim lobj_cdomsg As CDO.message 'Entrar em Project References e incluir a biblioteca cdosys.dll
Set lobj_cdomsg = New CDO.message
lobj_cdomsg.Configuration.Fields(cdoSMTPServer) = sSmtpServer
lobj_cdomsg.Configuration.Fields(cdoSMTPServerPort) = iSmtpPort
lobj_cdomsg.Configuration.Fields(cdoSMTPUseSSL) = bSmtpSSL
lobj_cdomsg.Configuration.Fields(cdoSMTPAuthenticate) = cdoBasic
lobj_cdomsg.Configuration.Fields(cdoSendUserName) = sSmtpUser
lobj_cdomsg.Configuration.Fields(cdoSendPassword) = sSmtpPword
lobj_cdomsg.Configuration.Fields(cdoSMTPConnectionTimeout) = 30
lobj_cdomsg.Configuration.Fields(cdoSendUsingMethod) = cdoSendUsingPort
lobj_cdomsg.Configuration.Fields.Update
lobj_cdomsg.To = sTo
lobj_cdomsg.From = sFrom
lobj_cdomsg.Subject = sSubject
lobj_cdomsg.TextBody = sBody
If Trim$(sFilePath) <> vbNullString Then
lobj_cdomsg.AddAttachment (sFilePath)
End If
lobj_cdomsg.Send
Set lobj_cdomsg = Nothing
SendMail = "ok"
Exit Function
SendMail_Error:
SendMail = Err.Description
End Function
' Metodo para enviar uma mensagem de erro que ocorreu no GeoSan
'
' arquivoParaEnviar - nome do arquivo completo a ser enviado em anexo ao email. p. ex. C:\user\pinheiro\geosanLogErro.txt
'
Public Function enviaEmail(arquivoParaAnexar As String) 'As String
Dim retval As String
Dim textoErro As String
textoErro = "Segue em anexo o arquivo de log do erro ocorrido no GeoSan."
retval = SendMail(emailDestinatario, "GeoSan - Aviso de erro", emailRemetente, textoErro, enderecoSMTP, portaSMTP, usuarioSMTP, senhaSMTP, arquivoParaAnexar, SslSmtp)
enviaEmail = retval
End Function
' Método para ler as configurações de envio de email
'
'
Public Function leConfiguracoesEmail()
Dim caminhoGeoSanIni As String
caminhoGeoSanIni = App.path & "\CONTROLES\GEOSAN.INI"
emailDestinatario = ReadINI("EMAIL", "EMAILDESTINATARIO", caminhoGeoSanIni)
emailRemetente = ReadINI("EMAIL", "EMAILREMETENTE", caminhoGeoSanIni)
enderecoSMTP = ReadINI("EMAIL", "ENDERECOSMTP", caminhoGeoSanIni)
portaSMTP = CInt(IIf(ReadINI("EMAIL", "PORTASMTP", caminhoGeoSanIni) = "", 0, ReadINI("EMAIL", "PORTASMTP", caminhoGeoSanIni))) 'caso não encontre retorna a porta zero
usuarioSMTP = ReadINI("EMAIL", "USUARIOSMTP", caminhoGeoSanIni)
senhaSMTP = ReadINI("EMAIL", "SENHASMTP", caminhoGeoSanIni)
SslSmtp = CBool(IIf(ReadINI("EMAIL", "SSLSMTP", caminhoGeoSanIni) = "", "TRUE", ReadINI("EMAIL", "SSLSMTP", caminhoGeoSanIni))) 'caso exista erro na leitura da segurança ssl, define como padrão TRUE, senão o que foi entrado no arquivo .ini
If emailDestinatario = "" Or emailRemetente = "" Or enderecoSMTP = "" Or portaSMTP = 0 Or usuarioSMTP = "" Or senhaSMTP = "" Then 'define como padrão o email da NEXUS, pois não consegui ler corretamente no arquivo .ini
emailDestinatario = "tec@nexusbr.com"
emailRemetente = "NEXUS <tec@nexusbr.com>"
enderecoSMTP = "smtp.gmail.com"
portaSMTP = 465
usuarioSMTP = "tec@nexusbr.com"
senhaSMTP = "nexus243"
SslSmtp = True
Else
'conseguiu ler com sucesso todas informações e está pronto para enviar emails caso ocorra um erro na aplicação
End If
End Function