Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
Rhuan Pablo

Thread para Envio de E-mails

Recommended Posts

Olá pessoal!

Bom, estou iniciando hj no fórum, e desejo me empenhar em auxiliar no quer for possível! Programo em Delphi a algum tempo, e tenho um conhecimento bem razoável.

Bom, mas hj eu preciso de ajuda!!

Estou desenvolvendo um sistema de Mailing para minha empresa (envio de e-mails em massa)... para o envio, utilizo uma THREAD para que a aplicação na "congele" durante o envio, ja que são muitos e-mails...

Pois bem, mesmo com a THREAD meu programa congela... Ja fiz várias tentativas e nada... Ficaria extremamente agradecido se alguém me ajuda-se!

Segue abaixo trecho importante do código:

///EXECUTE DA THREAD///

procedure TMailThread.Execute;

var xAnexo, i: integer;

begin

i2 := 0;

with frmMail do

begin

//Trata a Prioridade da mensagem

case cbxPrioridade.ItemIndex of

0 : IdMessage.Priority := mpHigh;

1 : IdMessage.Priority := mpNormal;

2 : IdMessage.Priority := mpLow;

end;

IdMessage.Subject := edtAssunto.Text;

IdMessage.Body := mmMensagem.Lines;

if cbxConfirmaLeitura.Checked then

IdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta

//Tratando os arquivos anexos

for xAnexo := 0 to lbxAnexos.Items.Count-1 do

TIdAttachmentFile.Create(idmessage.MessageParts, TFileName(lbxAnexos.Items.Strings[xAnexo]));

frmMail.Bar.Position := 0;

// frmMail.SMTP.Connect;

frmMail.memError.Lines.Add('Iniciando envio de e-mails em massa.'+#13#10+#13#10);

end;

for I := 0 to frmMail.lbxEnviar.Count - 1 do

Synchronize(Send);

frmMail.SMTP.Disconnect;

frmMail.memError.Lines.Add('Envio de e-mails concluído'+#13#10+#13#10+IntToStr(i2)+' e-mails enviados');

Application.MessageBox('E-mails enviados com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);

end;

///PROCEDURE QUE ATIVA A THREAD/////

procedure TfrmMail.Mailing;

var ThreadSend: TMailThread;

begin

ThreadSend := TMailThread.Create(true);

ThreadSend.FreeOnTerminate := true;

ThreadSend.Priority := tpLower;

ThreadSend.Resume;

end;

Desde já, muito obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

Muito obrigado a todos que olharam meu Post!

Mas já resolvi a questão!

Como eu executava determinados comandos "longos" na Thread, tive que tirar o synchronize na hora de chamar o procedimento no Execute!

Assim ele não fica "segurando" o form até que a opção seja realizada!

Muito obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também estou com o mesmo problema.

No meu caso eu consigo enviar o email sem ser na Thread, porém

na Thread não dá nenhum erro, diz que enviou mas não chega.

Estou fazendo assim:

No form de envio tem 4 edits recebendo os dados para envio e um botão pra enviar.

Na Thread dentro do procedimento EXECUTE coloquei todos os comando de

envio do email.

Alguém sabe por que não envia ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×
×
  • Criar Novo...