Fórum Enviando email via Delphi 2007 #386460
16/09/2010
0
Bom dia pessoal estou precisando de ajuda, mas não venho de mãos vazias. Neste post estou disponibilizando o códidgo para enviar email utilizando o Delphi 2007 e componentes Indy.
Meu problema é o seguinte, o email em si é enviado normalmente! Porem o corpo do email fica todo desconfigurado e os anexos não estão no email .. é como se o anexo foi desmembrado no corpor!
Exemplo
Envio de email BOL para email IG
SMTP = smtp.bol.com.br
Usuário = diego.paraizo100@bol.com.br
Senha = ********
Corpo do email: Mensagem teste
Anexo: Texto.txt
Quando abro o email o corpo fica assim:
This is a multi-part message in MIME format --vs7sb=_7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =20 --vs7sb=_7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/html Content-Transfer-Encoding: quoted-printable DS02.Dataset.Edit;
if DS02.Dataset.FieldByName('VAGAS').As= Integer <=3D 0 then
DS02.Dataset.FieldByName('VAGAS2').AsStrin= g :=3D 'ESGOTADO'
else
DS02.Dataset.FieldByName('V= AGAS2').AsString :=3D IntToStr(DS02.Dataset.FieldByName('VAGAS').ASInt= eger);
//Neste momento o DS01 pega as informa=E7= =F5es necess=E1rias para exibir na grade e preenche o DS02 passando tu= do como texto, para usar o ESGOTADO
DS01.Dataset.Active :=3D True;=
DS02.Dataset.Active :=3D True;
DS01.DataSet.First;
while = not DS01.Dataset.EOF do begin
VAGAS :=3D DS01.Dataset.FieldB= yName('ATV_NUM_VAGAS_DISPONIVEIS').AsInteger - DS01.Dataset.FieldByNam= e('ATV_NUM_VAGAS_PREENCHIDAS').AsInteger;
DS02.Dataset.I= nsert;
DS02.Dataset.FieldByName('ATV_COD_EXT').AsString := =3D DS01.Dataset.FieldByName('ATV_COD_EXT').AsString;
DS02.D= ataset.FieldByName('ATV_TXT_DESC').AsString :=3D DS01.Dataset.FieldByN= ame('ATV_TXT_DESC').AsString;
DS02.Dataset.FieldByName('ATV_= TXT_PERIODO').AsString :=3D DS01.Dataset.FieldByName('ATV_TXT_PERIODO'= ).AsString;
if VAGAS <=3D0 then
DS02.Dataset.Fi= eldByName('VAGAS').AsString :=3D 'ESGOTADO'
Eis o código que estou utilizando:
procedure TTelaEmails.btnEnviarClick(Sender: TObject);
var
x: integer;
begin
assunto:=edtAssunto.Text;
usuario:=edtUsuario.Text;
servidor:=edtServidor.Text;
senha:=edtSenha.Text; //passando valores de componentes para variaveis privadas
emailEnvio:=edtEMailEnvio.Text;
nomeEnvio:=edtNomeEnvio.Text;
porta:=StrToInt(edtPorta.Text);
maxEnviosConexao:=StrToInt(edtMaxEnvioConexao.Text);
if MemoEnvio.Text <> '' then
lblTotalEMail.Caption:='Total de ' + IntToStr(MemoEnvio.Lines.Count) + ' E-Mails a enviar.'
else
lblTotalEMail.Caption:='Total de 0 E-Mail a enviar.';
if IdSMTP.Connected then//Reloga
Desconecta();
Conecta();
if IdSMTP.Connected then
begin //Barrinha de progresso
Gauge.MaxValue:=MemoEnvio.Lines.Count - 1;
Gauge.Progress:=0;
Gauge.Visible:=True;
Gauge.Refresh;
for x:=0 to MemoEnvio.Lines.Count - 1 do
begin
EnviarEMail(MemoEnvio.Lines.Strings[x]);
Gauge.Progress:=Gauge.Progress + 1;
Gauge.Refresh;
end;
Gauge.Visible:=False;
Gauge.Refresh;
MemoStatus.Lines.Add('');
MemoStatus.Lines.Add('Mensagens enviadas');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoEnviado.Lines.Count) + ' emails enviados.');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoRecusado.Lines.Count) + ' emails não enviados.');
end;
Desconecta();
Application.MessageBox('Concluído envio !','Envio de E-Mail',MB_OK or MB_APPLMODAL or MB_ICONINFORMATION);
end;
//==============================================================================
procedure TTelaEmails.EnviarEmail(email: string);
var
str: string;
lTextPart: TIdText;
lAnexo: TIdAttachmentFile ;
enviado: boolean;
x: integer;
begin
if maxEnviosConexao > 0 then //O usuario escolhe quantos enviar por vez se passa do limite estipulado o sistema para
if enviadosConexao >= maxEnviosConexao then
begin
MemoStatus.Lines.Add('Atingido o limite de ' + IntToStr(maxEnviosConexao) + ' envios, fazer reconexão !');
Desconecta();
Conecta();
end;
enviado:=False;
str:='';
IdMessage.Headers.Values['X-Library']:=''; //Setando valores padroes no Idmessage
IdMessage.MessageParts.Clear;
IdMessage.Recipients.EMailAddresses:=email;
IdMessage.Subject:=assunto;
IdMessage.ContentType:='text/html';
lTextPart:=TIdText.Create(IDMessage.MessageParts); //Instancia
lTextPart.Body.Text:=' '; //Corpo do email
lTextPart.ContentType:='text/plain';
lTextPart:=TIdText.Create(IdMessage.MessageParts);
if (rgModEnvio.ItemIndex = 1) then begin
lTextPart.Body.Text:=MemoTextoEnvio.Text;
IdMessage.ContentType:='text'
end else begin
lTextPart.Body.Text:='<html>' + ConverteEnterBR(MemoTextoEnvio.Text) + '</html>';
lTextPart.ContentType:='text/html'
end;
for x:=0 to listArquivos.Items.Count-1 do //Anexa os arquivos
begin
lAnexo:=TIdAttachmentFile.Create(IdMessage.MessageParts,listArquivos.Items.Strings[x
]);
lAnexo.Headers.Add('Content-ID: <AnexoNro' + IntToStr(x) + '>');
end;
IdMessage.From.Address:=emailEnvio; //De quem
IdMessage.From.Name:=nomeEnvio; //Nome de quem
IdMessage.Priority:=mpNormal; //Prioridade
try
IdSMTP.Send(IdMessage); //Enviar!
enviado:=True;
except
on E: Exception do //Mostra o erro no memo
MemoRecusado.Lines.Add(email + ' - Erro: ' + RemoveEnter(E.Message));
end;
if enviado then
MemoEnviado.Lines.Add(email);
Inc(enviadosConexao);
end;
Se alguem puder ajudar. Agradecido Diego Paraizo
email: diego.paraizo100@hotmail.com
Meu problema é o seguinte, o email em si é enviado normalmente! Porem o corpo do email fica todo desconfigurado e os anexos não estão no email .. é como se o anexo foi desmembrado no corpor!
Exemplo
Envio de email BOL para email IG
SMTP = smtp.bol.com.br
Usuário = diego.paraizo100@bol.com.br
Senha = ********
Corpo do email: Mensagem teste
Anexo: Texto.txt
Quando abro o email o corpo fica assim:
This is a multi-part message in MIME format --vs7sb=_7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =20 --vs7sb=_7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/html Content-Transfer-Encoding: quoted-printable DS02.Dataset.Edit;
if DS02.Dataset.FieldByName('VAGAS').As= Integer <=3D 0 then
DS02.Dataset.FieldByName('VAGAS2').AsStrin= g :=3D 'ESGOTADO'
else
DS02.Dataset.FieldByName('V= AGAS2').AsString :=3D IntToStr(DS02.Dataset.FieldByName('VAGAS').ASInt= eger);
//Neste momento o DS01 pega as informa=E7= =F5es necess=E1rias para exibir na grade e preenche o DS02 passando tu= do como texto, para usar o ESGOTADO
DS01.Dataset.Active :=3D True;=
DS02.Dataset.Active :=3D True;
DS01.DataSet.First;
while = not DS01.Dataset.EOF do begin
VAGAS :=3D DS01.Dataset.FieldB= yName('ATV_NUM_VAGAS_DISPONIVEIS').AsInteger - DS01.Dataset.FieldByNam= e('ATV_NUM_VAGAS_PREENCHIDAS').AsInteger;
DS02.Dataset.I= nsert;
DS02.Dataset.FieldByName('ATV_COD_EXT').AsString := =3D DS01.Dataset.FieldByName('ATV_COD_EXT').AsString;
DS02.D= ataset.FieldByName('ATV_TXT_DESC').AsString :=3D DS01.Dataset.FieldByN= ame('ATV_TXT_DESC').AsString;
DS02.Dataset.FieldByName('ATV_= TXT_PERIODO').AsString :=3D DS01.Dataset.FieldByName('ATV_TXT_PERIODO'= ).AsString;
if VAGAS <=3D0 then
DS02.Dataset.Fi= eldByName('VAGAS').AsString :=3D 'ESGOTADO'
Eis o código que estou utilizando:
procedure TTelaEmails.btnEnviarClick(Sender: TObject);
var
x: integer;
begin
assunto:=edtAssunto.Text;
usuario:=edtUsuario.Text;
servidor:=edtServidor.Text;
senha:=edtSenha.Text; //passando valores de componentes para variaveis privadas
emailEnvio:=edtEMailEnvio.Text;
nomeEnvio:=edtNomeEnvio.Text;
porta:=StrToInt(edtPorta.Text);
maxEnviosConexao:=StrToInt(edtMaxEnvioConexao.Text);
if MemoEnvio.Text <> '' then
lblTotalEMail.Caption:='Total de ' + IntToStr(MemoEnvio.Lines.Count) + ' E-Mails a enviar.'
else
lblTotalEMail.Caption:='Total de 0 E-Mail a enviar.';
if IdSMTP.Connected then//Reloga
Desconecta();
Conecta();
if IdSMTP.Connected then
begin //Barrinha de progresso
Gauge.MaxValue:=MemoEnvio.Lines.Count - 1;
Gauge.Progress:=0;
Gauge.Visible:=True;
Gauge.Refresh;
for x:=0 to MemoEnvio.Lines.Count - 1 do
begin
EnviarEMail(MemoEnvio.Lines.Strings[x]);
Gauge.Progress:=Gauge.Progress + 1;
Gauge.Refresh;
end;
Gauge.Visible:=False;
Gauge.Refresh;
MemoStatus.Lines.Add('');
MemoStatus.Lines.Add('Mensagens enviadas');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoEnviado.Lines.Count) + ' emails enviados.');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoRecusado.Lines.Count) + ' emails não enviados.');
end;
Desconecta();
Application.MessageBox('Concluído envio !','Envio de E-Mail',MB_OK or MB_APPLMODAL or MB_ICONINFORMATION);
end;
//==============================================================================
procedure TTelaEmails.EnviarEmail(email: string);
var
str: string;
lTextPart: TIdText;
lAnexo: TIdAttachmentFile ;
enviado: boolean;
x: integer;
begin
if maxEnviosConexao > 0 then //O usuario escolhe quantos enviar por vez se passa do limite estipulado o sistema para
if enviadosConexao >= maxEnviosConexao then
begin
MemoStatus.Lines.Add('Atingido o limite de ' + IntToStr(maxEnviosConexao) + ' envios, fazer reconexão !');
Desconecta();
Conecta();
end;
enviado:=False;
str:='';
IdMessage.Headers.Values['X-Library']:=''; //Setando valores padroes no Idmessage
IdMessage.MessageParts.Clear;
IdMessage.Recipients.EMailAddresses:=email;
IdMessage.Subject:=assunto;
IdMessage.ContentType:='text/html';
lTextPart:=TIdText.Create(IDMessage.MessageParts); //Instancia
lTextPart.Body.Text:=' '; //Corpo do email
lTextPart.ContentType:='text/plain';
lTextPart:=TIdText.Create(IdMessage.MessageParts);
if (rgModEnvio.ItemIndex = 1) then begin
lTextPart.Body.Text:=MemoTextoEnvio.Text;
IdMessage.ContentType:='text'
end else begin
lTextPart.Body.Text:='<html>' + ConverteEnterBR(MemoTextoEnvio.Text) + '</html>';
lTextPart.ContentType:='text/html'
end;
for x:=0 to listArquivos.Items.Count-1 do //Anexa os arquivos
begin
lAnexo:=TIdAttachmentFile.Create(IdMessage.MessageParts,listArquivos.Items.Strings[x
]);
lAnexo.Headers.Add('Content-ID: <AnexoNro' + IntToStr(x) + '>');
end;
IdMessage.From.Address:=emailEnvio; //De quem
IdMessage.From.Name:=nomeEnvio; //Nome de quem
IdMessage.Priority:=mpNormal; //Prioridade
try
IdSMTP.Send(IdMessage); //Enviar!
enviado:=True;
except
on E: Exception do //Mostra o erro no memo
MemoRecusado.Lines.Add(email + ' - Erro: ' + RemoveEnter(E.Message));
end;
if enviado then
MemoEnviado.Lines.Add(email);
Inc(enviadosConexao);
end;
Se alguem puder ajudar. Agradecido Diego Paraizo
email: diego.paraizo100@hotmail.com
Diego Paraizo
Curtir tópico
+ 0
Responder
Posts
16/09/2010
Diego Paraizo
Bom dia pessoal estou precisando de ajuda, mas não venho de mãos vazias. Neste post estou disponibilizando o códidgo para enviar email utilizando o Delphi 2007 e componentes Indy.
Meu problema é o seguinte, o email em si é enviado normalmente! Porem o corpo do email fica todo desconfigurado e os anexos não estão no email .. é como se o anexo fosse desmembrado no copor!
Exemplo
Envio de email BOL para email IG
SMTP = smtp.bol.com.br
Usuário = diego.paraizo100@bol.com.br
Senha = ********
Corpo do email: Mensagem teste
Anexo: Texto.txt
Quando abro o email o corpo fica assim:
This is a multi-part message in MIME format --vs7sb=_ 7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =20 --vs7sb=_7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/html Content-Transfer-Encoding: quoted-printable DS02.Dataset.Edit;
if DS02.Dataset.FieldByName('VAGAS').As= Integer <=3D 0 then
DS02.Dataset.FieldByName('VAGAS2').AsStrin= g :=3D 'ESGOTADO'
else
DS02.Dataset.FieldByName('V= AGAS2').AsString :=3D IntToStr(DS02.Dataset.FieldByName('VAGAS').ASInt= eger);
//Neste momento o DS01 pega as informa=E7= =F5es necess=E1rias para exibir na grade e preenche o DS02 passando tu= do como texto, para usar o ESGOTADO
DS01.Dataset.Active :=3D True;=
DS02.Dataset.Active :=3D True;
DS01.DataSet.First;
while = not DS01.Dataset.EOF do begin
VAGAS :=3D DS01.Dataset.FieldB= yName('ATV_NUM_VAGAS_DISPONIVEIS').AsInteger - DS01.Dataset.FieldByNam= e('ATV_NUM_VAGAS_PREENCHIDAS').AsInteger;
DS02.Dataset.I= nsert;
DS02.Dataset.FieldByName('ATV_COD_EXT').AsString := =3D DS01.Dataset.FieldByName('ATV_COD_EXT').AsString;
DS02.D= ataset.FieldByName('ATV_TXT_DESC').AsString :=3D DS01.Dataset.FieldByN= ame('ATV_TXT_DESC').AsString ;
DS02.Dataset.FieldByName('ATV_= TXT_PERIODO').AsString :=3D DS01.Dataset.FieldByName('ATV_ TXT_PERIODO'= ).AsString;
if VAGAS <=3D0 then
DS02.Dataset.Fi= eldByName('VAGAS').AsString :=3D 'ESGOTADO'
//===============================================================================
Eis o código que estou utilizando:
procedure TTelaEmails.btnEnviarClick(Sender: TObject);
var
x: integer;
begin
assunto :=edtAssunto.Text;
usuario :=edtUsuario.Text;
servidor :=edtServidor.Text;
senha :=edtSenha.Text; //passando valores de componentes para variaveis privadas
emailEnvio :=edtEMailEnvio.Text;
nomeEnvio :=edtNomeEnvio.Text;
porta :=StrToInt(edtPorta.Text);
maxEnviosConexao :=StrToInt(edtMaxEnvioConexao.Text);
if MemoEnvio.Text <> '' then
lblTotalEMail.Caption:='Total de ' + IntToStr(MemoEnvio.Lines.Count) + ' E-Mails a enviar.'
else
lblTotalEMail.Caption:='Total de 0 E-Mail a enviar.';
if IdSMTP.Connected then//Reloga
Desconecta();
Conecta();
if IdSMTP.Connected then
begin //Barrinha de progresso
Gauge.MaxValue:=MemoEnvio.Lines.Count - 1;
Gauge.Progress:=0;
Gauge.Visible:=True;
Gauge.Refresh;
for x:=0 to MemoEnvio.Lines.Count - 1 do
begin
EnviarEMail(MemoEnvio.Lines.Strings[x]);
Gauge.Progress:=Gauge.Progress + 1;
Gauge.Refresh;
end;
Gauge.Visible:=False;
Gauge.Refresh;
MemoStatus.Lines.Add('');
MemoStatus.Lines.Add('Mensagens enviadas');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoEnviado.Lines.Count) + ' emails enviados.');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoRecusado.Lines.Count) + ' emails não enviados.');
end;
Desconecta();
Application.MessageBox('Concluído envio !','Envio de E-Mail',MB_OK or MB_APPLMODAL or MB_ICONINFORMATION);
end;
//==============================================================================
procedure TTelaEmails.EnviarEmail(email: string);
var
str: string;
lTextPart: TIdText;
lAnexo: TIdAttachmentFile ;
enviado: boolean;
x: integer;
begin
if maxEnviosConexao > 0 then //O usuario escolhe quantos enviar por vez se passa do limite estipulado o para o sistema
if enviadosConexao >= maxEnviosConexao then
begin
MemoStatus.Lines.Add('Atingido o limite de ' + IntToStr(maxEnviosConexao) + ' envios, fazer reconexão !');
Desconecta();
Conecta();
end;
enviado:=False;
str:='';
IdMessage.Headers.Values['X-Library']:=''; //Setando valores padroes no Idmessage
IdMessage.MessageParts.Clear;
IdMessage.Recipients.EMailAddresses:=email;
IdMessage.Subject:=assunto;
IdMessage.ContentType:='text/html';
lTextPart:=TIdText.Create(IDMessage.MessageParts); //Instancia
lTextPart.Body.Text:=' '; //Corpo do email
lTextPart.ContentType:='text/plain';
lTextPart:=TIdText.Create(IdMessage.MessageParts);
if (rgModEnvio.ItemIndex = 1) then begin
lTextPart.Body.Text:=MemoTextoEnvio.Text;
IdMessage.ContentType:='text'
end else begin
lTextPart.Body.Text:='' + ConverteEnterBR(MemoTextoEnvio.Text) + '';
lTextPart.ContentType:='text/html'
end;
for x:=0 to listArquivos.Items.Count-1 do //Anexa os arquivos
begin
lAnexo:=TIdAttachmentFile.Create(IdMessage.MessageParts,listArquivos.Items.Strings[x
]);
lAnexo.Headers.Add('Content-ID: ');
end;
IdMessage.From.Address:=emailEnvio; //De quem
IdMessage.From.Name:=nomeEnvio; //Nome de quem
IdMessage.Priority:=mpNormal; //Prioridade
try
IdSMTP.Send(IdMessage); //Enviar!
enviado:=True;
except
on E: Exception do //Mostra o erro no memo
MemoRecusado.Lines.Add(email + ' - Erro: ' + RemoveEnter(E.Message));
end;
if enviado then
MemoEnviado.Lines.Add(email);
Inc(enviadosConexao);
end;
Se alguem puder ajudar. Agradecido Diego Paraizo
email: diego.paraizo100@hotmail.com
Meu problema é o seguinte, o email em si é enviado normalmente! Porem o corpo do email fica todo desconfigurado e os anexos não estão no email .. é como se o anexo fosse desmembrado no copor!
Exemplo
Envio de email BOL para email IG
SMTP = smtp.bol.com.br
Usuário = diego.paraizo100@bol.com.br
Senha = ********
Corpo do email: Mensagem teste
Anexo: Texto.txt
Quando abro o email o corpo fica assim:
This is a multi-part message in MIME format --vs7sb=_ 7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =20 --vs7sb=_7I7dWRe35MX9qEL5iU0JwRs6lpw Content-Type: text/html Content-Transfer-Encoding: quoted-printable DS02.Dataset.Edit;
if DS02.Dataset.FieldByName('VAGAS').As= Integer <=3D 0 then
DS02.Dataset.FieldByName('VAGAS2').AsStrin= g :=3D 'ESGOTADO'
else
DS02.Dataset.FieldByName('V= AGAS2').AsString :=3D IntToStr(DS02.Dataset.FieldByName('VAGAS').ASInt= eger);
//Neste momento o DS01 pega as informa=E7= =F5es necess=E1rias para exibir na grade e preenche o DS02 passando tu= do como texto, para usar o ESGOTADO
DS01.Dataset.Active :=3D True;=
DS02.Dataset.Active :=3D True;
DS01.DataSet.First;
while = not DS01.Dataset.EOF do begin
VAGAS :=3D DS01.Dataset.FieldB= yName('ATV_NUM_VAGAS_DISPONIVEIS').AsInteger - DS01.Dataset.FieldByNam= e('ATV_NUM_VAGAS_PREENCHIDAS').AsInteger;
DS02.Dataset.I= nsert;
DS02.Dataset.FieldByName('ATV_COD_EXT').AsString := =3D DS01.Dataset.FieldByName('ATV_COD_EXT').AsString;
DS02.D= ataset.FieldByName('ATV_TXT_DESC').AsString :=3D DS01.Dataset.FieldByN= ame('ATV_TXT_DESC').AsString ;
DS02.Dataset.FieldByName('ATV_= TXT_PERIODO').AsString :=3D DS01.Dataset.FieldByName('ATV_ TXT_PERIODO'= ).AsString;
if VAGAS <=3D0 then
DS02.Dataset.Fi= eldByName('VAGAS').AsString :=3D 'ESGOTADO'
//===============================================================================
Eis o código que estou utilizando:
procedure TTelaEmails.btnEnviarClick(Sender: TObject);
var
x: integer;
begin
assunto :=edtAssunto.Text;
usuario :=edtUsuario.Text;
servidor :=edtServidor.Text;
senha :=edtSenha.Text; //passando valores de componentes para variaveis privadas
emailEnvio :=edtEMailEnvio.Text;
nomeEnvio :=edtNomeEnvio.Text;
porta :=StrToInt(edtPorta.Text);
maxEnviosConexao :=StrToInt(edtMaxEnvioConexao.Text);
if MemoEnvio.Text <> '' then
lblTotalEMail.Caption:='Total de ' + IntToStr(MemoEnvio.Lines.Count) + ' E-Mails a enviar.'
else
lblTotalEMail.Caption:='Total de 0 E-Mail a enviar.';
if IdSMTP.Connected then//Reloga
Desconecta();
Conecta();
if IdSMTP.Connected then
begin //Barrinha de progresso
Gauge.MaxValue:=MemoEnvio.Lines.Count - 1;
Gauge.Progress:=0;
Gauge.Visible:=True;
Gauge.Refresh;
for x:=0 to MemoEnvio.Lines.Count - 1 do
begin
EnviarEMail(MemoEnvio.Lines.Strings[x]);
Gauge.Progress:=Gauge.Progress + 1;
Gauge.Refresh;
end;
Gauge.Visible:=False;
Gauge.Refresh;
MemoStatus.Lines.Add('');
MemoStatus.Lines.Add('Mensagens enviadas');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoEnviado.Lines.Count) + ' emails enviados.');
MemoStatus.Lines.Add('Total de ' + IntToStr(MemoRecusado.Lines.Count) + ' emails não enviados.');
end;
Desconecta();
Application.MessageBox('Concluído envio !','Envio de E-Mail',MB_OK or MB_APPLMODAL or MB_ICONINFORMATION);
end;
//==============================================================================
procedure TTelaEmails.EnviarEmail(email: string);
var
str: string;
lTextPart: TIdText;
lAnexo: TIdAttachmentFile ;
enviado: boolean;
x: integer;
begin
if maxEnviosConexao > 0 then //O usuario escolhe quantos enviar por vez se passa do limite estipulado o para o sistema
if enviadosConexao >= maxEnviosConexao then
begin
MemoStatus.Lines.Add('Atingido o limite de ' + IntToStr(maxEnviosConexao) + ' envios, fazer reconexão !');
Desconecta();
Conecta();
end;
enviado:=False;
str:='';
IdMessage.Headers.Values['X-Library']:=''; //Setando valores padroes no Idmessage
IdMessage.MessageParts.Clear;
IdMessage.Recipients.EMailAddresses:=email;
IdMessage.Subject:=assunto;
IdMessage.ContentType:='text/html';
lTextPart:=TIdText.Create(IDMessage.MessageParts); //Instancia
lTextPart.Body.Text:=' '; //Corpo do email
lTextPart.ContentType:='text/plain';
lTextPart:=TIdText.Create(IdMessage.MessageParts);
if (rgModEnvio.ItemIndex = 1) then begin
lTextPart.Body.Text:=MemoTextoEnvio.Text;
IdMessage.ContentType:='text'
end else begin
lTextPart.Body.Text:='' + ConverteEnterBR(MemoTextoEnvio.Text) + '';
lTextPart.ContentType:='text/html'
end;
for x:=0 to listArquivos.Items.Count-1 do //Anexa os arquivos
begin
lAnexo:=TIdAttachmentFile.Create(IdMessage.MessageParts,listArquivos.Items.Strings[x
]);
lAnexo.Headers.Add('Content-ID: ');
end;
IdMessage.From.Address:=emailEnvio; //De quem
IdMessage.From.Name:=nomeEnvio; //Nome de quem
IdMessage.Priority:=mpNormal; //Prioridade
try
IdSMTP.Send(IdMessage); //Enviar!
enviado:=True;
except
on E: Exception do //Mostra o erro no memo
MemoRecusado.Lines.Add(email + ' - Erro: ' + RemoveEnter(E.Message));
end;
if enviado then
MemoEnviado.Lines.Add(email);
Inc(enviadosConexao);
end;
Se alguem puder ajudar. Agradecido Diego Paraizo
email: diego.paraizo100@hotmail.com
Responder
Gostei + 0
16/09/2010
Diego Paraizo
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)