ENVIO DE MAIL PELO CLIENTE INSTALADO
Tenho a seguinte função para enviar mails pelo cliente instalado:
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_SHOW = 5
Private Sub cmdEnviar_Click()
Set rstMails = New ADODB.Recordset
strSql = "SELECT * FROM tMails"
rstMails.CursorLocation = adUseClient
rstMails.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
Do While Not rstMails.EOF
nome = rstMails("nome")
Mail = rstMails("email")
CC = txtCC
BCC = txtBCC
Assunto = txtAss
Mensagem = Trim$(txtMensagem)
ShellExecute hwnd, _
"open", _
"mailto:" & Mail & _
"?subject=" & Assunto & _
"&body=" & Replace(Mensagem, vbCrLf, "%0D%0A"), _
vbNullString, vbNullString, _
SW_SHOW
rstMails.MoveNext
Loop
Set rstMails = Nothing
End Sub
Só que de facto, não envia o mail. Ele é criado mas, para seguirtenho que clickar no enviar.
Será que alguém me pode indicar o passo que falta para que o mail seja automáticamente enviado?
Se sim, fico antecipadamente grato.
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_SHOW = 5
Private Sub cmdEnviar_Click()
Set rstMails = New ADODB.Recordset
strSql = "SELECT * FROM tMails"
rstMails.CursorLocation = adUseClient
rstMails.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
Do While Not rstMails.EOF
nome = rstMails("nome")
Mail = rstMails("email")
CC = txtCC
BCC = txtBCC
Assunto = txtAss
Mensagem = Trim$(txtMensagem)
ShellExecute hwnd, _
"open", _
"mailto:" & Mail & _
"?subject=" & Assunto & _
"&body=" & Replace(Mensagem, vbCrLf, "%0D%0A"), _
vbNullString, vbNullString, _
SW_SHOW
rstMails.MoveNext
Loop
Set rstMails = Nothing
End Sub
Só que de facto, não envia o mail. Ele é criado mas, para seguirtenho que clickar no enviar.
Será que alguém me pode indicar o passo que falta para que o mail seja automáticamente enviado?
Se sim, fico antecipadamente grato.
veja neste link, ele pode te dar uma luz..
http://www.vbmania.com.br/vbmdetail.php?varID=131
blz...
http://www.vbmania.com.br/vbmdetail.php?varID=131
blz...
Tente isso:
1º Coloque um componente MAPISESSION e um MAPIMESSAGE no seu form, depois coloque esse código:
não testei mas deve funcionar...
1º Coloque um componente MAPISESSION e um MAPIMESSAGE no seu form, depois coloque esse código:
Private Sub cmdEnviar_Click()
Set rstMails = New ADODB.Recordset
strSql = "SELECT * FROM tMails"
rstMails.CursorLocation = adUseClient
rstMails.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
MAPISession1.SignOn
Do While Not rstMails.EOF
MAPIMessages1.SessionID = MAPISession1.SessionID
MAPIMessages1.Compose
MAPIMessages1.RecipAddress = rstMails("email")
MAPIMessages1.MsgSubject = txtAss
MAPIMessages1.MsgNoteText = Trim$(txtMensagem)
MAPIMessages1.MsgOrigDisplayName = rstMails("nome")
MAPIMessages1.Save
rstMails.MoveNext
Loop
MAPIMessages1.Send
MAPISession1.SignOff
Set rstMails = Nothing
End Sub
não testei mas deve funcionar...
Tópico encerrado , respostas não são mais permitidas