email com varios anexos

Delphi

09/03/2012

bom dia pessoal, gostaria de uma ajuda de voces, estou precisando enviar um email pelo delphi, so que com mais de um anexo, com apenas um anexo eu consigo, agora com mais de um anexo eu nao sei como fazer, o anexo em questao e um arquivo pdf, segue abaixo minha rotina que estou utilizando

//gerando o pdf para envio

if rbEscolher1.Checked then
begin
TRY
BEGIN
with busca_imagem do
begin
Close;
sql.clear;
sql.Add(select hoteis.foto_hotel,hoteis.servicos_hotel,hoteis.formapag,hoteis.conheca_hotel,hoteis.obs from hoteis where nome_hotel = :hotel);
ParamByName(hotel).Value := cbbHotel1.Text;
Open;
end;
frmRelatorios.Relatorios.SetParam(foto_hotel,busca_imagemFOTO_HOTEL.Text);
frmrelatorios.relatorios.SetParam(hotel,cbbHotel1.Text);
frmrelatorios.relatorios.SetParam(entrada,dataExtenso(StrToDate(edtentrada.Text)));
frmrelatorios.relatorios.SetParam(saida,dataExtenso(StrToDate(edtSaida.Text)));
frmrelatorios.relatorios.SetParam(noites,edtNoites.Text);
frmrelatorios.relatorios.SetParam(single,edtSingle.Text);
frmrelatorios.relatorios.SetParam(ad_adulto,edtAdulto.Text);
frmrelatorios.relatorios.SetParam(inclui,busca_imagemSERVICOS_HOTEL.Text);
frmrelatorios.relatorios.SetParam(formapag,busca_imagemFORMAPAG.Text);
frmrelatorios.relatorios.SetParam(conheca_hotel,busca_imagemCONHECA_HOTEL.Text);
frmrelatorios.relatorios.SetParam(obs,busca_imagemOBS.Text);
frmrelatorios.relatorios.SetParam(total_pag,FormatFloat(R$ #,##0.00,StrToFloat(edtTotal.Text)));
//frmrelatorios.relatorios.ExecuteReport(orcamento);
//frmRelatorios.Relatorios.Close;
//Exportando o Relatorio
frmrelatorios.RvSystem1.DoNativeOutput := False;
frmrelatorios.RvSystem1.RenderObject := FrmRelatorios.RvRenderPDF1;
frmrelatorios.RvSystem1.OutputFileName := D:\SISTEMAS DELPHI\CALDASVIAGENS\imagens\ORÇAMENTO +edtNomeCli.Text+ OPCAO1.PDF;
end_anexo := frmrelatorios.RvSystem1.OutputFileName;
//frmrelatorios.RvSystem1.SystemSetups := [ssAllowSetup];
frmrelatorios.relatorios.ExecuteReport(orcamento);
end;
EXCEPT
ShowMessage(Erro ao Gerar Orçamento !!!!);
abort;
END;
end;

email := TIdMessage.Create(nil);
smtp := TIdSMTP.Create(nil);
DmDados.config_email.Open;
try
email.From.Name := DmDados.config_emailNOME.AsString;
email.From.Address := dmdados.config_emailEMAIL.AsString;
email.Recipients.EMailAddresses := edtEmailCli.Text;
email.Priority := mpHighest;
email.Subject := Orçamento para Reserva do +cbbHotel1.Text;

smtp.Host := dmdados.config_emailUSUARIO.AsString;
smtp.Username := DmDados.config_emailEMAIL.AsString;
smtp.Password := dmdados.config_emailSENHA.AsString;

//autenticacao
autent_ssl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
smtp.IOHandler := autent_ssl;
SMTP.UseTLS := utUseImplicitTLS;
autent_ssl.DefaultPort := StrToInt(dmdados.config_emailPORTA.AsString);
autent_ssl.SSLOptions.Method := sslvSSLv3;
autent_ssl.SSLOptions.Mode := sslmClient;
smtp.AuthType := satDefault;
smtp.Port := StrToInt(dmdados.config_emailPORTA.AsString);

//text := TIdText.Create(nil);
if rbEscolher1.Checked then
begin
with busca_imagem do
begin
Close;
sql.clear;
sql.Add(select hoteis.foto_hotel,hoteis.servicos_hotel,hoteis.formapag,hoteis.conheca_hotel,hoteis.obs from hoteis where nome_hotel = :hotel);
ParamByName(hotel).Value := cbbHotel1.Text;
Open;
end;
text := TIdText.Create(email.MessageParts);
text.ContentType := text/html;
text.Body.Add(<HTML><BODY>);
text.Body.Add(<H2><small>Prezado(a): +edtNomeCli.Text+,<small></H2>);
text.Body.Add(<H2><small>Segue em Anexo os Orçamentos para o periodo Solicitado:<small></H2>);
text.Body.Add(<H2>Qualquer Duvida,favor Retornar esse e-mail Informando seu Telefone fixo que Retornamos.</H2>);
text.Body.Add(<BR><BR>);
//anexa as imagens que vai no email
text := TIdText.Create(email.MessageParts);
text.ContentType := text/plain;
anexo := TIdAttachmentFile.Create(email.MessageParts,end_anexo);
anexo.ExtraHeaders.Values[content-ID] := imagem1.jpg;
end;
//envia o email
smtp.UseEhlo := true;
smtp.UseVerp := false;
smtp.ReadTimeout := 10000;
smtp.Connect;
Sleep(1000);
smtp.Authenticate;
Sleep(1000);
try
if smtp.Connected then
smtp.Send(email)
else
begin
ShowMessage(Mensagem nao pode ser enviada);
Exit;
end;
except
smtp.Disconnect;
smtp.Host := dmdados.config_emailUSUARIO.AsString;
smtp.AuthType := satNone;
smtp.Connect;
try
smtp.Send(email);
except
begin
ShowMessage(Nao pode enviar o email para +edtNomeCli.Text+, verifique as configuracoes da conta);
end;
end;
smtp.Disconnect;
end;
smtp.Disconnect;

finally
ShowMessage(Email enviado com sucesso );
end;

se alguem puder me ajudar ficarei grato !!
Willian Bento

Willian Bento

Curtidas 0

Respostas

Felipe Ip

Felipe Ip

09/03/2012

bom dia,

// Anexos
IdMessage.MessageParts.Clear;
for x := 0 to LBAnexos.Items.Count-1 do
TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName(LBAnexos.Items.Strings[x]));

LBAnexos é um list box com os arquivos com seus caminhos completos por exemplo:
c:\delphi\fotos\foto1.bmp
c:\delphi\fotos\foto2.bmp
...

Espero ter ajudado.


GOSTEI 0
POSTAR