Eder Postado Fevereiro 4, 2008 Denunciar Share Postado Fevereiro 4, 2008 Ola..tou usando esta dica aqui do Jonas pra envio de email pelo Delphi.Funciona muito bemMas preciso colocar uma imagem(papel de carta) no emailComo eu poderia fazer isto?Grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 4, 2008 Denunciar Share Postado Fevereiro 4, 2008 Mas preciso colocar uma imagem(papel de carta) no emailOi Eder ... voce quer anexar uma figura ao email ? ou quer colocar uma figura de fundo ( tipo papel de carta ) no email ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Fevereiro 5, 2008 Autor Denunciar Share Postado Fevereiro 5, 2008 Oba...Jonas..é como Papel de Carta.você havia me passado o seguinte código pra envio do email(componente Indy):procedure TFormEmailCli.XiButton1Click(Sender: TObject); begin {Configuração do IdMessage (dados da mensagem)} IdMessage1.From.Address := EditRemetente.text; //e-mail do remetente IdMessage1.Recipients.EMailAddresses := EditDestinatario.text;//e-mail do destinatário IdMessage1.Subject := EditAssunto.text; //Assunto IdMessage1.Body.Add(MemoMensagem.text); //Corpo da mensagem {Configuração do IdSMTP (dados do servidor de email} //anexar TIdAttachment.Create(IdMessage1.MessageParts, 'c:\teste.txt'); //IdSMTP1.BoundIP := '201.00.999.888'; {Endereço IP da sua Maquina no momento} IdSMTP1.Host := EditSmtp.text;//Host SMTP do bol IdSMTP1.Port := StrToInt(EditPorta.text); //Port do bol IdSMTP1.Username := EditUserName.text;//Login do usuário IdSMTP1.Password := EditPassWord.Text; //Senha do usuário IdSMTP1.AuthenticationType := atLogin; //tipo da autenticação IdSMTP1.Connect; //Estabelece a conexão IdSMTP1.Authenticate; //Faz a autenticação try IdSMTP1.Send(IdMessage1); showmessage('Ok. Mesagem Enviada com Sucesso.'); //Envia a mensagem except showmessage('ERRO. Não enviado.'); //Mensagem de erro end; IdSMTP1.Disconnect; end;Aguardo.....Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 5, 2008 Denunciar Share Postado Fevereiro 5, 2008 Oi Eder ... acho que voce vai encontrar algo parecido neste endereçohttp://www.trichview.com/forums/viewtopic.php?t=11abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Fevereiro 6, 2008 Autor Denunciar Share Postado Fevereiro 6, 2008 Ola..Jonas..procurei mas não achei......O site ta em Ingles...ai me perdi:blush: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 6, 2008 Denunciar Share Postado Fevereiro 6, 2008 tradução para o primeiroEsta demonstração tem comentário errado: {De fato, esta demonstração converte todos os quadros a Jpegs, tão só TJpegImage pode ocorrer aqui. Mas você pode usar RV_RegisterHTMLGraphicFormat para permitir outro formatos gráficos em HTML} De fato, esta demonstração salva todas as imagens em formatos como eles são. Usa evento de OnSaveImage2, e são passadas imagens a este evento sem conversão para jpegs. Com a finalidade de economia de e-mail, você deveria converter imagens a jpegs (ou png, ou gifs). Chame o código para este evento para (e adicione CRVData em uses): procedure TForm1.RichViewEdit1SaveImage2(Sender: TCustomRichView; Graphic: TGraphic; SaveFormat: TRVSaveFormat; const Path, ImagePrefix: String; var ImageSaveNo: Integer; var Location: String; var DoDefault: Boolean); var gr: TGraphic; bmp: TBitmap; begin if SaveFormat<>rvsfHTML then exit; if not (Graphic is TJPEGImage) and not RV_IsHTMLGraphicFormat(Graphic) then begin bmp := TBitmap.Create; try bmp.Assign(Graphic); except bmp.Width := Graphic.Width; bmp.Height := Graphic.Height; bmp.Canvas.Draw(0,0, Graphic); end; gr := TJPEGImage.Create; gr.Assign(bmp); bmp.Free; end else gr := Graphic; Location := Format('image%d.%s', [ImageSaveNo, GraphicExtension(TGraphicClass(gr.ClassType))]); inc(ImageSaveNo); with HTMLImages.Add as THTMLImageItem do begin gr.SaveToStream(Stream); Name := Location; ContentType := GetImageContentType(gr); end; Location := 'cid:'+Location; DoDefault := False; if gr<>Graphic then gr.Free; end; .................................................................................................................. tradução para o segundo Como enviar o documento TRichView como e-mail formatado Este exemplo usa componente de TNMSMTP Na mesma demonstração, adicione a nova função que devolve documento codificado como string. Como você pode ver, há 2 diferenças principais que comparam ao arquivo original salvando procedimento da demonstração: 1) não são incluídos cabeçalhos 2) não só HTML+images, mas uma alternativa de texto clara é incluída. uses RVUni; function TForm1.GetEMail: String; var Stream: TStringStream; Stream2: TMemoryStream; ws: WideString; s, s2: String; boundary: String; i: Integer; begin // saving text HTMLImages.Clear; Stream2 := TMemoryStream.Create; RichViewEdit1.SaveTextToStreamW('', Stream2, 80, False, False); Stream2.Position := 0; SetLength(ws, Stream2.Size div 2); if Stream2.Size<>0 then Stream2.ReadBuffer(Pointer(ws)^, Stream2.Size); s2 := MimeEncodeString(Utf8Encode(ws)); Stream2.Free; // saving HTML Stream := TStringStream.Create(''); RichViewEdit1.SaveHTMLToStreamEx(Stream, '', 'Web Archive Demo', '', '', '', '', [rvsoUseCheckpointsNames, rvsoUTF8]); s := MimeEncodeString(Stream.DataString); Stream.Free; // now s contains HTML file without images, base64-encoded. saving it in MIME boundary := '----=_BOUNDARY_LINE_'; Result := 'This is a multi-part message in MIME format.'+CRLF+CRLF+ '--'+boundary+CRLF+ 'Content-Type: text/plain;'+CRLF+ #9'charset="utf-8"'+CRLF+ 'Content-Transfer-Encoding: base64'+CRLF+CRLF+ s2+CRLF+CRLF+ '--'+boundary+CRLF+ 'Content-Type: text/html;'+CRLF+ #9'charset="utf-8"'+CRLF+ 'Content-Transfer-Encoding: base64'+CRLF+CRLF+ s+CRLF; // saving images for i := 0 to HTMLImages.Count-1 do begin s2 := CRLF+ '--'+boundary+CRLF; SetLength(s, HTMLImages[i].Stream.Size); HTMLImages[i].Stream.Position := 0; HTMLImages[i].Stream.ReadBuffer(PChar(s)^, Length(s)); s := MimeEncodeString(s); s2 := s2+'Content-Type: '+HTMLImages[i].ContentType+CRLF+ #9'Name="'+HTMLImages[i].Name+'"'+CRLF+ 'Content-Transfer-Encoding: base64'+CRLF+ 'Content-ID: <'+HTMLImages[i].Name+'>'+CRLF+CRLF+ s+CRLF; Result := Result+s2; end; Result := Result+CRLF+'--'+boundary+'--'+CRLF; HTMLImages.Clear; end; Enviando: NMSMTP1.Host := ...; NMSMTP1.Port := ...; NMSMTP1.UserID := ...; NMSMTP1.Connect; NMSMTP1.PostMessage.FromAddress := ...; NMSMTP1.PostMessage.FromName := ...; NMSMTP1.PostMessage.ToAddress.Text := ...; NMSMTP1.PostMessage.ToCarbonCopy.Text := ''; NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := ''; NMSMTP1.PostMessage.Body.Text := GetEMail; NMSMTP1.PostMessage.Attachments.Text := ''; NMSMTP1.PostMessage.Subject := 'HTML Test'; NMSMTP1.PostMessage.LocalProgram := 'Demo HTML Mailer'; NMSMTP1.PostMessage.Date := ''; NMSMTP1.PostMessage.ReplyTo := ...; NMSMTP1.SendMail; The main trick is in adding headers in NMSMTP1.OnSendStart: procedure TForm1.NMSMTP1SendStart(Sender: TObject); begin NMSMTP1.FinalHeader.Add('MIME-Version: 1.0'); NMSMTP1.FinalHeader.Add('Content-Type: multipart/alternative;'); NMSMTP1.FinalHeader.Add(#9'boundary="----=_BOUNDARY_LINE_"'); end;se eu entendi direito voce joga uma imagem dentro de um documento html e depois envia por email usando os componentes indy ( não só HTML+images, mas uma alternativa de texto clara é incluída. )abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Fevereiro 6, 2008 Autor Denunciar Share Postado Fevereiro 6, 2008 Ok...vou dar uma analizada.....muito Grato :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder
Ola..
tou usando esta dica aqui do Jonas pra envio de email pelo Delphi.
Funciona muito bem
Mas preciso colocar uma imagem(papel de carta) no email
Como eu poderia fazer isto?
Grato
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.