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