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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
Entre para seguir isso  

×
×
  • Criar Novo...