Ir para conteúdo
Fórum Script Brasil

Denis_K

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre Denis_K

Denis_K's Achievements

0

Reputação

  1. Olá Jhonas! Obrigado por responder! Pois é, mas as funções que eu postei nos outros fóruns eram praticamente iguais, pois o trecho getTipoMIME(ExtractFileExt(anexoCaminho)) retornava 'application/pdf'. Mas infelizmente do jeito que você me mostrou o erro ocorre também. ---- Agora há pouco, depois de pesquisar e testar muito eu consegui resolver o problema da seguinte forma: aqui: anexo.ContentType := 'application/pdf; name=' + ExtractFileName(anexoCaminho); eu coloquei apenas: anexo.ContentType := 'application/pdf;'; PS: IMPORTANTE: Com o ponto-e-vírgula! Observando o fonte dos e-mails, parece que ou os serviços de e-mail ou os componentes Indy já incluem o nome do arquivo, de modo que o "name=x.pdf" ficava duplicado. Por algum motivo no Webmail e no Yahoo! isso era ignorado. De qualquer modo, muito obrigado! Segue abaixo o código de envio de e-mail com anexo completo: (Nota: Eu testei apenas enviando para Yahoo!, Hotmail, Gmail e Webmail da Locaweb. Usando como remetente um e-mail do Webmail da Locaweb) Procedure para envio de e-mail com anexo procedure TForm1.enviar; var anexoCaminho : String; IdAttachmentFile : TIdAttachmentFile; IdSMTP1 : TIdSMTP; IdMessage1 : TIdMessage; begin try //Mensagem IdMessage1 := TIdMessage.Create(Self); with IdMessage1 do begin Recipients.EMailAddresses := 'email_de_destino@xpto.com.br'; //Destinatário Subject := 'Assunto'; //Assunto Body.Text := 'Este e-mail tem um PDF em anexo'; //Corpo do e-mail Sender.Name := 'Fulano'; //Nome de quem está enviando From.Name := 'Fulano'; //Nome de quem está enviando From.Address := 'email_do_remetente@xpto.com.br'; //e-mail de quem está enviando ContentType := 'multipart/mixed'; //Tipo de conteúdo do e-mail end; //Anexo anexoCaminho := 'C:\x.pdf'; //Caminho do arquivo with IdAttachmentFile do begin IdAttachmentFile := TIdAttachmentFile.Create(IdMessage1.MessageParts, anexoCaminho); //Incluindo o anexo na mensagem IdAttachmentFile.ContentType := 'application/pdf;'; //Informando o tipo MIME do anexo. IMPORTANTE! Colocar o tipo MIME +; (ponto-e-vírgula) IdAttachmentFile.FileName := ExtractFileName(anexoCaminho); //Nome do arquivo end; //SMTP IdSMTP1 := TIdSMTP.Create(Self); //Criando o objeto with IdSMTP1 do begin Username := 'email_do_remetente@xpto.com.br'; //Nome de usuário (e-mail do remetente) Password := 'senha_do_email_do_remetente'; //Senha do remetente Host := 'smtp.xpto.com.br'; //Host do remetente Connect(); //Conectar Authenticate(); //Autenticar Send(IdMessage1); //Enviar Disconnect(); //Desconectar end; ShowMessage('Enviado!'); except on e : Exception do begin MessageDlg('Ocorreu um erro' + #13 + e.Message,mtError,[mbOK],0); end; end; end;
  2. Olá! Comecei a usar os componentes Indy para fazer envios de e-mail da minha aplicação, e os e-mails estão sendo enviados normalmente, mas o nome do anexo, quando envio para contas do Gmail ou Hotmail, aparecem errados. Quando envio para contas do Webmail (da Locaweb) e do Yahoo! os anexos chegam com os nomes corretos. Por exemplo: Eu envio um anexo "x.pdf" nas contas Webmail e Yahoo! Chega com o nome "x.pdf" normal Nas contas do Gmail ou Hotmail chega com o nome x.pdf name="x.pdf" Alguém tem ideia do que possa ser? Segue abaixo o código do envio procedure TForm1.envio1; var anexoCaminho : String; anexo : TIdAttachmentFile; IdSMTP1 : TIdSMTP; IdMessage1 : TIdMessage; begin IdSMTP1 := TIdSMTP.Create(Self); IdMessage1 := TIdMessage.Create(Self); with IdMessage1 do begin Recipients.EMailAddresses := 'destinatario@email.com'; //Destinatário Subject := 'Isso aquilo 2'; Body.Text := 'Texto'; Sender.Name := 'Nome'; From.Name := 'Nome'; From.Address := 'enderecodeenvio@emailtal.com.br'; anexoCaminho := 'C:\x.pdf'; anexo := TIdAttachmentFile.Create(MessageParts, anexoCaminho); anexo.ContentType := 'application/pdf; name=' + ExtractFileName(anexoCaminho); anexo.FileName := 'x.pdf'; end; with IdSMTP1 do begin Username := 'enderecodeenvio@emailtal.com.br'; Password := 'senhatal'; Host := 'smtp.emailtal.com.br'; Connect(); Authenticate(); Send(IdMessage1); Disconnect(); end; end; Obrigado!
  3. Ressucitando o tópico... Tente fazer assim: No evento onShow do Formulário da DLL, coloque = Componente.CreateParented(Self.Handle); O único problema é que ele aparentemente cria o componente de volta. Se alguém souber resolver este outro problema, eu agradeço =)
×
×
  • Criar Novo...