Zintegrowanie obrazkow w mailu w formacie HTML (D2005, INDY1

0

Witam!
Mam ogromną prośbę.

Obecnie korzystam z Delphi 2005 Personal i pakietu INDY10.
Piszę program, którego zadaniem jest wysyłanie emaili do określonych osób (za ich zgodą) w formacie HTML.
W ramach emaila mamy tekst oraz grafikę - 2 obrazki w formacie jpeg.
Jak wysłać tego emaila, w formacie HTML, aby obrazki zintegrowały się z emailem? Tak, żeby nie były one sciogane z zewnetrznego serwera?

W skrócie to jest tak:

procedure TPocztaFrm.Wyslij(DoKogo : string); // tu podaje adresy email osob, do ktorych wysylany jest email
var
   Htmpart : TIdText;
   Txtpart : TIdText;
   Bmppart : TIdAttachmentFile;
   Email   : TIdMessage;
begin
   Email := TIdMessage.Create(nil);
   Email.Body.AddStrings(EmailBody);
   Email.Assign(Strona.Lines); // kod HTML maila
   Email.From.Text:=UserName + ' <'+UserEmail+'>';
   Email.ReplyTo.EMailAddresses:=UserName + ' <'+UserEmail+'>';
   Email.Subject:=TematWiadomosciE.Text;  // temat (tak przy okazji - nie mam tu polskich znakow ;(
   Email.ContentType := 'multipart/mixed';
   Email.CharSet:='ISO-8859-2';
   Email.Priority:=TIdMessagePriority(SMTPPriority);
   Email.BccList.EMailAddresses:= DoKogo;
   Email.Organization:='blabla';
   Email.Encoding:=meMime;

   Txtpart := TIdText.Create(Email.MessageParts);
   Txtpart.ContentType := 'text/plain';
   Txtpart.Body.Text := '';

   Htmpart := TIdText.Create(Email.MessageParts, EmailBody);
   Htmpart.ContentType := 'text/html';

   Bmppart := TIdAttachmentFile.Create(Email.MessageParts, ObrazekMaila1);
   Bmppart.ContentType := 'image/jpeg';
   Bmppart.FileIsTempFile := false;
   Bmppart.ContentDisposition := 'inline';
   Bmppart.ExtraHeaders.Values['content-id'] := obrazek1;
   Bmppart.DisplayName := obrazek1;

   Bmppart := TIdAttachmentFile.Create(Email.MessageParts, ObrazekMaila2);
   Bmppart.ContentType := 'image/jpeg';
   Bmppart.FileIsTempFile := false;
   Bmppart.ContentDisposition := 'inline';
   Bmppart.ExtraHeaders.Values['content-id'] := obrazek2;
   Bmppart.DisplayName := obrazek2;

  // autoryzacja
   Case SmtpAuthType of
      0: SMTP.AuthType := atNone;
      1: SMTP.AuthType := atdefault;

   end;

   SMTP.MailAgent:='Nazwa programu';
   SMTP.ReadTimeout:=60000;
   SMTP.Username := SmtpServerUser;
   SMTP.Password := SmtpServerPassword;
   SMTP.Host := SmtpServerName;
   SMTP.Port := SmtpServerPort;

  try
     SMTP.Connect;
    try
      SMTP.Send(Email);
    except
      on E: Exception do
        begin
           BladFrm.PassL.Caption:='Nie udało się poprawnie wysłać wiadomości' + #13 + E.Message;
           BladFrm.ObrazBlad.Visible:=true;
           BladFrm.ObrazInfo.Visible:=false;
           BladFrm.ShowModal;
           Exit;
        end;
    end;
  finally
    SMTP.Disconnect;
    Email.Free;
  end;
end;

Dodam, że wszystko bylo OK, jesli program skompilowałem w Delphi 7 wraz z INDY9.

Ps: Moge dostarczyc wiecej kodu wysylania maila. Sprawa jest BARDZO pilna, ponieważ program pisze na zlecenie (za darmo) i to, ze obrazki nie wyświetlają sie poprawnie jest niedopuszczalne.
Dziękuje za każdą poradę.
Pozdrawiam
Pepe

0

nie wiem, czy w indy się da (chociaż powinno się dać). Ogólnie robione to jest tak, że obrazek zapisywany jest jako załącznik ze specjalnym znacznikiem Content-ID: <nazwa_znacznika> a w treści maila link do obrazka wygląda tak:

co do tematu i pl znaków to zobacz w źródle wiadomości, którą wysyła indy jak wygląda subject, czy jest on zapisany tak: =?ISO-8859-2?Q?treść tematu?=
przy czym wszystkie pl literki powinny zostać zamienione na taki ciąg =kod szesnastkowy znaku, np
zamiast ó =F3

0
Misiekd napisał(a)

nie wiem, czy w indy się da (chociaż powinno się dać). Ogólnie robione to jest tak, że obrazek zapisywany jest jako załącznik ze specjalnym znacznikiem Content-ID: <nazwa_znacznika> a w treści maila link do obrazka wygląda tak:

Dzieki za podpowiedz. Niestety, to nie działa. Obrazek owszem jest dołączany do emaila, ale w nieprawidłowy sposób. Ponieważ, obrazek, oprócz wyświetlania w miejscu gdzie ma być (ustalone przed kod HTML) wyświetlany jest na końcu maila, pod linią (<"hr">) oraz pokazywany jest jako załącznik!
Proszę o dalsze sugestie... Przecież ktoś musiał to zrobic poprawnie, no nie?...

Pozdr.
Pepe

0

no to albo obrazek będzie z netu albo będzie załącznikiem - nie może się brać z powietrza.

0
Misiekd napisał(a)

no to albo obrazek będzie z netu albo będzie załącznikiem - nie może się brać z powietrza.

Wlasnie obrazek nie ma byc z netu. Ma sie zapisac w tresci maila (jako załącznik?), jednocześnie nie pokazując ze to jest załącznik - ma być po prostu wyswietlany normalnie mail.
Przykład pokazałem na dwóch obrazkach.
Pierwszy, pokazuje stan jak ma być:
http://www.republika.pl/pepesoft/pic1.gif

Drugi, pokazuje jak mam.
http://www.republika.pl/pepesoft/pic2.gif
Jak widać, trzeba zrobić tak, żeby nie było pokazywane pole pod nagłówkiem (to z załączonym obrazkiem) oraz obrazek pod mailem, pod linią (której też ma nie być). No i jak to zrobić?

Pozdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1