Email - Relatório de envio
Olá amigos! Desenvolvi um sistema de envio de emails mas estou com um problema. No "Edit" em que eu digito os destinatários eu posso até colocar mais de um, contanto que eu separe eles por vírgula, até aí tudo bem... agora eu queria que na hora do envio eu pudesse saber se cada email enviado realmente existe no seu respectivo servidor e se existir envia o email e conta(em uma variavel) que foi enviado senão não envia e conta(em outra variavel) que não foi enviado ou seja:
for I := 0 to DBGrid_ListadeEmail.SelectedRows.Count-1 do
begin
if EmailExiste then
begin
** **variavel_enviado := variavel_enviado + 1;
EnviaEmail
** end else**
** begin**
variavel_nãoenviado := variavel_nãoenviado + 1;
NãoEnvia
Passa para o outro
**end;**
end;
Lembrando que uso Delphi 2010, IdSMTP, IdSSLIOHandlerSocketOpenSSL1, IdMessage, libeay32.dll e ssleay32.dll. Não preciso Validar o email e sim saber se ele existe. Desde já agradeço.
Vai abaixo meu código:
procedure TFRM_SEND_MAIL.Image_EnviarClick(Sender: TObject);
begin
// Configurações IdSMTP
with DM.IdSMTP1 do
begin
if DM.TBL_CONF_MAIL.FieldByName('RequerAutenticacao').AsString = 'True' then
begin
AuthType := satDefault; //Login
end else
begin
AuthType := satNone;
end;
Host := DM.TBL_CONF_MAIL.FieldByName('Servidor_SMTP').AsString;
Port := StrToInt(DM.TBL_CONF_MAIL.FieldByName('Porta').AsString);
Username := DM.TBL_CONF_MAIL.FieldByName('Usuario').AsString;
Password := DM.TBL_CONF_MAIL.FieldByName('Senha').AsString;
IOHandler := DM.IdSSLIOHandlerSocketOpenSSL1;
UseTLS := utUseExplicitTLS;
end;
// Configurações IdSSLIOHandlerSocketOpenSSL1
DM.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
DM.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient;
// Configuração de Escrita(Negrito)
if (CheckBox_Negrito.Checked = True) then
begin
Memo_OutrasDescricoes.Text := '<b>' + Memo_OutrasDescricoes.Text + '</b>';
end else
begin
Memo_OutrasDescricoes.Text := Memo_OutrasDescricoes.Text;
end;
Screen.Cursor := crHourGlass;
IdMessage1.Clear;
IdMessage1.MessageParts.Clear;
// Codificar MIME para enviar páginas HTML
IdMessage1.ContentTransferEncoding := 'text/html';
IdMessage1.ContentType := 'text/html';
IdMessage1.CharSet := 'ISO-8859-1'; // Nossa linguagem. Aparece acentos.
IdMessage1.From.Address := DM.TBL_CONF_MAIL.FieldByName('Usuario').AsString; // Remetente
IdMessage1.Subject := Edit_Assunto.Text; // Assunto
IdMessage1.Body.Text := Memo_OutrasDescricoes.Text + Memo_Corpo.Text; // Corpo HTML
// Configuração da confirmação de Leitura
if DM.TBL_CONF_MAIL.FieldByName('Conf_Leitura').AsString = 'True' then
begin
IdMessage1.From.Text := DM.TBL_CONF_MAIL.FieldByName('Usuario').AsString; //conta que irá aparecer
IdMessage1.ReceiptRecipient.Text := IdMessage1.From.Text; // Auto Resposta
end else
begin
IdMessage1.From.Text := '';
IdMessage1.ReceiptRecipient.Text := '';
end;
IdMessage1.Recipients.EMailAddresses := Edit_Para.Text; // Destinatário
//IdMessage1.BccList.EMailAddresses := Edit_CCO.Text;
//IdMessage1.CCList.EMailAddresses := Edit_CC.Text;
if not DM.IdSMTP1.Connected = True then
begin
try
DM.IdSMTP1.Connect();
except
StatusBar1.Panels[0].Text := 'Erro na tentativa de conexão.';
Screen.Cursor := crDefault;
DM.IdSMTP1.Disconnect();
Abort;
end;
try
DM.IdSMTP1.Authenticate();
Screen.Cursor := crHourGlass;
except
if DM.TBL_CONF_MAIL.FieldByName('Usuario').AsString = '' then
begin
StatusBar1.Panels[0].Text := 'Erro na autenticação de usuário. Campo "usuário" não pode ficar em branco.';
Screen.Cursor := crDefault;
DM.IdSMTP1.Disconnect();
Abort;
end else
if DM.TBL_CONF_MAIL.FieldByName('Senha').AsString = '' then
begin
StatusBar1.Panels[0].Text := 'Erro na autenticação de senha. Campo "senha" não pode ficar em branco.';
Screen.Cursor := crDefault;
DM.IdSMTP1.Disconnect();
Abort;
end else
begin
StatusBar1.Panels[0].Text := 'Erro na autenticação de usuário ou senha.';
Screen.Cursor := crDefault;
DM.IdSMTP1.Disconnect();
Abort;
end;
end; // except
StatusBar1.Panels[0].Text := 'Autenticação realizada com sucesso!';
Screen.Cursor := crDefault;
end; // if
if DM.IdSMTP1.Connected = True then
begin
DM.IdSMTP1.Send(IdMessage1);
StatusBar1.Panels[0].Text := 'Email enviado com sucesso!';
end;
Application.ProcessMessages;
Screen.Cursor := crDefault;
DM.IdSMTP1.Disconnect();
end;Discussão (3)
Carregando comentários...