Fórum email com varios anexos #413858

09/03/2012

0

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

Responder

Posts

10/03/2012

Felipe Ip

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar