Então, estou utilizando um script para enviar e-mails para multiplos destinários pelo Delphi.
Segue o código-fonte:
var
// objetos necessários para o funcionamento
IdSSLIOHandlerSocket: TIdSSLIOHandlerSocket;
IdSMTP: TIdSMTP;
IdMessage: TIdMessage;
CaminhoAnexo: string;
begin
// instanciação dos objetos
IdSSLIOHandlerSocket := TIdSSLIOHandlerSocket.Create(Self);
IdSMTP := TIdSMTP.Create(Self);
IdMessage := TIdMessage.Create(Self);
try
// Configuração do SSL
IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23;
IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient;
// Configuração do SMTP
IdSMTP.IOHandler := IdSSLIOHandlerSocket;
IdSMTP.AuthenticationType := atLogin;
IdSMTP.Port := 465;
IdSMTP.Host := 'smtp.gmail.com';
IdSMTP.Username := 'usuario';
IdSMTP.Password := 'senha';
// Tentativa de conexão e autenticação
try
IdSMTP.Connect;
IdSMTP.Authenticate;
except
on E:Exception do
begin
MessageDlg('Erro na conexão e/ou autenticação: ' +
E.Message, mtWarning, [mbOK], 0);
Exit;
end;
end;
// Configuração da mensagem
IdMessage.From.Address := 'meu.email@gmail.com';
IdMessage.From.Name := 'Meu Nome';
IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
IdMessage.Recipients.EMailAddresses := 'destinatario@email.com';
IdMessage.Subject := 'Assunto do e-mail';
IdMessage.Body.Text := 'Corpo do e-mail';
// Anexo da mensagem (opcional)
CaminhoAnexo := 'C:\Anexo.txt';
if FileExists(CaminhoAnexo) then
TIdAttachment.Create(IdMessage.MessageParts, CaminhoAnexo);
// Envio da mensagem
try
IdSMTP.Send(IdMessage);
MessageDlg('Mensagem enviada com sucesso.', mtInformation, [mbOK], 0);
except
On E:Exception do
MessageDlg('Erro ao enviar a mensagem: ' +
E.Message, mtWarning, [mbOK], 0);
end;
finally
// liberação dos objetos da memória
FreeAndNil(IdMessage);
FreeAndNil(IdSSLIOHandlerSocket);
FreeAndNil(IdSMTP);
end;
end;
Até ai tudo bem, o envio vai perfeitamente para minha caixa de entrada, porém quando envio para vários destinários ao mesmo tempo á minha aplicação trava.
Queria saber como para minha aplicação autenticar o envio conforme enviado para o destinário com um delay de 3 segundos para envio de cada mensagem, por por exemplo:
Enviado e-mail para : destinario1@hotmail.com - OK!
Delay (3) segundos.
Enviado e-mail para : destinario2@hotmail.com - OK!
Delay (3) segundos.
Enviado e-mail para : destinario3@hotmail.com - OK!
Delay (3) segundos.
Envio de e-mail market completo, você já pode fechar á aplicação.
Com base nesse script em perl.
#!/usr/local/bin/perl
$ARGC=@ARGV;
if ($ARGC !=4) {
printf "Você deve ter digitado os comandos de forma errada\n";
printf "Veja como usar corretamente...\n";
printf "perl $0 <mailist> <remetente\@mail.com> <assunto> <corpo.html>\n";
printf "Exemplo: perl $0 lista01.txt peu\@msn.com Ola index.html\n";
exit(1);
}
$mailtype = "content-type: text/html";
$sendmail = '/usr/sbin/sendmail';
$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
open(FOO, $ARGV[3]);
@foo = <FOO>;
$corpo = join("\n", @foo);
open (BANDFIT, "$emar") || die "Can't Open $emar";
$cont=0;
while(<BANDFIT>) {
($ID,$options) = split(/\|/,$_);
chop($options);
foreach ($ID) {
$recipient = $ID;
open (SENDMAIL, "| $sendmail -t");
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n";
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL);
$cont=$cont+1;
printf "$cont Enviado para $recipient";
}
}
close(BANDFIT);
Pergunta
Kali
Olá amigos da Scripbrasil.
Então, estou utilizando um script para enviar e-mails para multiplos destinários pelo Delphi.
Segue o código-fonte:
Até ai tudo bem, o envio vai perfeitamente para minha caixa de entrada, porém quando envio para vários destinários ao mesmo tempo á minha aplicação trava.
Queria saber como para minha aplicação autenticar o envio conforme enviado para o destinário com um delay de 3 segundos para envio de cada mensagem, por por exemplo:
Enviado e-mail para : destinario1@hotmail.com - OK!
Delay (3) segundos.
Enviado e-mail para : destinario2@hotmail.com - OK!
Delay (3) segundos.
Enviado e-mail para : destinario3@hotmail.com - OK!
Delay (3) segundos.
Envio de e-mail market completo, você já pode fechar á aplicação.
Com base nesse script em perl.
Abraços, espero que alguém me ajude!!
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.