CanonTG Posted March 24, 2014 Report Share Posted March 24, 2014 (edited) Boas, Como enviar anexos num e-mail? este é o meu código try idSMTP1 := TIdSMTP.create(nil); idmessage1 := TIdMessage.create(nil); // configura servidor SMTP idSMTP1.Host := 'smtp.gmail.com'; idSMTP1.Username := 'caxtia1991@gmail.com'; idSMTP1.Password := ' '; idSMTP1.ConnectTimeout := 20000; // configurações adicionais servidor SMTP com autenticação with idSMTP1 do begin IdSSL := nil; try port := 465; IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil); IdSMTP1.IOHandler := IdSSL; UseTLS := utUseImplicitTLS; except on E: Exception do begin IOHandler := TIdIOHandler.MakeDefaultIOHandler(nil); UseTLS := utNoTLSSupport; end; end; if Assigned(IdSSL) then begin IdSSL.SSLOptions.Method := sslvSSLv3; IdSSL.SSLOptions.Mode := sslmClient; end; end; idSMTP1.AuthType := IdSMTP.satDefault; // configurando mensagem idmessage1.Clear; idmessage1.CharSet:='iso-8859-1'; idmessage1.Encoding := MeMIME; idmessage1.ContentType:='multipart/related'; idmessage1.from.address := 'caxtia1991@gmail.com'; // e-mail do remetente // e-mail destinatario | idmessage1.recipients.emailaddresses := LabelEmailCli.Caption;//'martapinheiro620@gmail.com'; // Assunto (titulo E-mail) idmessage1.subject :=EditAssunto.Text ;//'Teste de SSL gmail'; // Corpo da Mensagem (use aqui um HTML ou texto que deseja enviar // juntamente com a mensagem. textomsg := TIdText.Create(idmessage1.MessageParts); textomsg.Body.Text := MemoConteudo.Text;//'Prezado Cliente, este é um teste de email com SSL no gmail'; //Anexos textomsg.ContentType := 'text/html'; idSMTP1.Connect; idSMTP1.Authenticate; idSMTP1.send(idmessage1); idSMTP1.Disconnect; ShowMessage('E-mail Enviado!'); finally idmessage1.Free; idSSL.Free; IdSMTP1.Free; end; Edited March 24, 2014 by CanonTG Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Report Share Posted March 24, 2014 Tens de criar uma variável do tipo TIdAttachmentFile. Depois, antes do connect, tens de ligar essa variável à da mensagem, e inserir-lhe o ficheiro a enviar. Ex: var Anexo : TIdAttachmentFile; FileName : String; begin Filename := 'c:\xpto.jpg'; // Caminho e Nome do ficheiro a enviar . . . . Anexo := TIdAttachmentFile.Create(idMessage1.MessageParts, Filename); Anexo.ExtraHeaders.Values['content-id'] := ''; Anexo.ContentType := 'image/jpeg'; Anexo.FileIsTempFile := False; Anexo.ContentDisposition := 'inline'; Anexo.DisplayName := 'xpto.jpg'; . . . . 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
CanonTG Posted March 24, 2014 Author Report Share Posted March 24, 2014 (edited) Para enviar anexos em pdf , eu tentei com este código mas fica em txt e não se percebe nada for i := 0 to ListBox1.Items.Count-1 do Filename := ListBox1.Items.Strings[i]; Anexo := TIdAttachmentFile.Create(idmessage1.MessageParts, Filename); Anexo.ExtraHeaders.Values['content-id'] := ''; Anexo.ContentType := 'pdf'; Anexo.FileIsTempFile := False; Anexo.ContentDisposition := 'inline'; Anexo.DisplayName := Filename+'.pdf'; Edited March 24, 2014 by CanonTG Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Report Share Posted March 24, 2014 Para enviar anexos em pdf , eu tentei com este código mas fica em txt e não se percebe nada Para PDF, usa só a primeira linha do código de Anexo (a que tem o TIdAttachmentFile.Create). Nota no entanto que esse código só te vai enviar o último anexo da listbox1. Estás a corre-la toda, mas guardas sempre o resultado em cima da mesma variável. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
CanonTG Posted March 24, 2014 Author Report Share Posted March 24, 2014 Eu envio assim e envia quantos anexos estiverem na ListBox, o problema é que no e-mail o anexo está sem extensão for i := 0 to ListBox1.Items.Count-1 do TIdAttachmentFile.Create(idmessage1.MessageParts, ListBox1.Items.Strings[i]); Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Report Share Posted March 24, 2014 (edited) Na listbox o nome do ficheiro tem extensão? Se não tiver, acrescentas na hora do envio: for i := 0 to ListBox1.Items.Count-1 do TIdAttachmentFile.Create(idmessage1.MessageParts, ListBox1.Items.Strings[i]+'.pdf'); O ideal no entanto era, antes de adicionares o anexo, confirmares se o ficheiro existe. Nesse caso: for i := 0 to ListBox1.Items.Count-1 do begin FileName:=ListBox1.Items.Strings[i]+'.pdf'; if FileExists(Filename) then TIdAttachmentFile.Create(idmessage1.MessageParts, Filename); end; Edited March 24, 2014 by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
CanonTG Posted March 24, 2014 Author Report Share Posted March 24, 2014 Na listBox tem lá a extensão por isso é que acho estranho quando recebo o e-mail não a ter Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Report Share Posted March 24, 2014 Muito estranho, sem dúvida... Experimenta: for i := 0 to ListBox1.Items.Count-1 do begin FileName:=ListBox1.Items.Strings[i]+'.pdf'; if FileExists(Filename) then with TIdAttachmentFile.Create(idmessage1.MessageParts, Filename) do DisplayName := Filename; end; "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
CanonTG Posted March 24, 2014 Author Report Share Posted March 24, 2014 Já tinha experimentado e assim com +'.pdf' não manda nenhum anexo Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Report Share Posted March 24, 2014 Sim, claro... Se na listbox tem a extensão, não podes por ali. Retira o .pdf, mas o resto mantém (DisplayName = Filename). "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
CanonTG Posted March 24, 2014 Author Report Share Posted March 24, 2014 Eu tenho apenas este código, e continuo com o problema for i := 0 to ListBox1.Items.Count-1 do begin FileName:=ListBox1.Items.Strings[i]; if FileExists(Filename) then TIdAttachmentFile.Create(idmessage1.MessageParts, Filename); end; Link to comment Share on other sites More sharing options...
nunopicado Posted March 24, 2014 Report Share Posted March 24, 2014 Sim, claro... Se na listbox tem a extensão, não podes por ali. Retira o .pdf, mas o resto mantém (DisplayName = Filename). Experimenta, como eu disse em cima, meter o DisplayName. Usa o With para não teres de criar uma variável. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
CanonTG Posted March 24, 2014 Author Report Share Posted March 24, 2014 Não deu resultado :/ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now