Ir para conteúdo
Fórum Script Brasil
  • 0

Anexar Papel de Carta ao Email


Eder

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

tradução para o primeiro

Esta 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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...