Avatar billede spil2vind Nybegynder
04. maj 2009 - 14:57 Der er 13 kommentarer og
1 løsning

Sende HTML emails hvor billederne er med i mailen

Jeg har et program, som kan sende emails som HTML, hvor billed filerne skal hentes, når email åbnes, dette vil jeg gerne undgå, altså vil jeg gerne have billed filerne med i den fremsendte email, dette er jo muligt når man bruger outlook. Jeg har brugt nedenstående kode:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdMessage, IdText, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
  IdSMTP;

type
  TForm2 = class(TForm)
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  HTML: TIdText;
  Body: TStrings;

begin
    IdMessage1.Recipients.Clear;
    IdMessage1.NoDecode := False;
    IdMessage1.NoEncode := False;
    IdMessage1.From.Address := 'carsten@bjarlert.dk';
    IdMessage1.From.Name := 'Carsten Lau Bjarlert';
    IdMessage1.Recipients.EMailAddresses := 'carsten@bjarlert.dk';
    IdMessage1.Subject := 'En lille herfra';
    IdMessage1.Body.Clear;
    HTML := TIdText.Create(IdMessage1.MessageParts);
    HTML.ContentType := 'text/html';
    with HTML.Body do begin
      Add('<html>');
      Add('<head>');
      Add('<title>' + IdMessage1.Subject + '</title>');
      Add('</head>');
      Add('<body>');
      Add('Hej <BR><BR>');
      Add('<HR align="left" width="20%">');
      Body := TStringList.Create;
      Body.Text := 'Body tekst start';
      Add('<p>Nedenst&aring;ende er et eksempel fra hjemmesiden.</p>');
      Add('<td width="932"><br><a href="http://www.spil2vind.dk"><img border="0" src="http://www.spil2vind.dk/png/LSidenSidst8.png" width="602" height="305"></a><br>');
      Add('<HR><BR>');
      Add('<BR>');
      Add('Med venlig hilsen<BR><BR>');
      Add(IdMessage1.From.Name);
      Add('</body>');
      Add('</html>');
    end;
    try
      IdSMTP1.Host := Trim('smtp.fullrate.dk');
      IdSMTP1.Connect;
      try
        IdSMTP1.Send(IdMessage1);
      except on E: Exception do ShowMessage(E.Message);
      end;
      IdSMTP1.Disconnect;
    except on E: Exception do ShowMessage(E.Message);
    end;
end;

end.


Håber der er nogen som kan få tilføjet billed filen via MIME eller hvad der nu skal bruges
Avatar billede Hardball21 Nybegynder
04. maj 2009 - 16:45 #1
Check dette eksempel: http://www.example-code.com/delphi/send-html-email.asp

Jeg foretrækker at have billerne på min webserver - så kan jeg checke stats for at se hvor mange gange en email er læst -- og så holder det email størrelsen nede.
Avatar billede spil2vind Nybegynder
05. maj 2009 - 08:10 #2
Nu ønsker jeg jo at have mulighed for at sende billederne med og det kan sikkert lade sig gøre med den software du henviser til, men den koster jo lige penge og det må da være muligt at attache billed filen til mailen
Avatar billede Hardball21 Nybegynder
05. maj 2009 - 08:50 #3
Sorry, ja det har du ret i - Jeg bruger selv INDY (den socket pakke der følger med Delphi).

Her er et eksempel som kun bruger INDY:


procedure TForm1.Button1Click(Sender: TObject);
var
  html: TStrings;
  htmpart, txtpart: TIdText;
  bmppart: TIdAttachment;
  email: TIdMessage;
  filename: string;

begin
  filename := ExtractFilePath(Application.ExeName) + ‘us.jpg';

  html := TStringList.Create();
  html.Add('<html>');
  html.Add('<head>');
  html.Add('</head>');
  html.Add('<body><h1>Hello</h1>');
  html.Add('<img src="cid:us.jpg" />');
  html.Add('This is a picture of us!</body>');
  html.Add('</html>');

  email := TIdMessage.Create(nil);
  email.From.Text := ‘Pete@NooooSpammmm.Droopyeyes.com';
  email.Recipients.EMailAddresses := ‘Pete@NoooSpammmm.droopyeyes.com';
  email.Subject := ‘Hello';
  email.ContentType := ‘multipart/mixed';
  email.Body.Assign(html);

  txtpart := TIdText.Create(email.MessageParts);
  txtpart.ContentType := ‘text/plain';
  txtpart.Body.Text := ";

  htmpart := TIdText.Create(email.MessageParts, html);
  htmpart.ContentType := ‘text/html';

  bmppart := TIdAttachment.Create(email.MessageParts, filename);
  bmppart.ContentType := ‘image/jpeg';
  bmppart.FileIsTempFile := true;
  bmppart.ContentDisposition := ‘inline';
  bmppart.ExtraHeaders.Values['content-id'] := ‘us.jpg';
  bmppart.DisplayName := ‘us.jpg';

  try
    idSMTP.Connect();
    try
      idSMTP.Send(email);
      ShowMessage('Sent');
    except
      on E: Exception do
        ShowMessage('Failed: ‘ + E.Message);
    end;
  finally
    idSMTP.Disconnect();
    email.Free();
    html.Free();
  end;
end;



Håber dette hjælper bedre!



mvh
Avatar billede spil2vind Nybegynder
05. maj 2009 - 08:56 #4
Ja, det er noget af den jeg har haft brugt, men TIdAttachment.Create(email.MessageParts, filename); har ikke længere parameteren for file mere, så noget andet skal gøres
Avatar billede Hardball21 Nybegynder
05. maj 2009 - 09:05 #5
Bruger du D2009? - Jeg bruger selv ovenstående kode i D2007
Avatar billede spil2vind Nybegynder
05. maj 2009 - 09:14 #6
Yes, jeg bruger 2009 og 2006, men har indy 20 forskellige måder at fungere på?
Avatar billede spil2vind Nybegynder
05. maj 2009 - 09:16 #7
Undskyld indy 10, du bruger formentlig indy 9
Avatar billede Hardball21 Nybegynder
05. maj 2009 - 10:21 #8
Må lige vente til at checke til i morgen - arbejder ikke på kontoret så har ikke adgang til min maskine ... men ... Jeg mener nu det er v10 Jeg bruger (kan huske et eller andet med at omskrive hele attachment siden da D2007 kom)
Avatar billede spil2vind Nybegynder
06. maj 2009 - 10:08 #9
Vil blive utrolig glad, hvis nogen ville komme med kommentarer til mit problem :-)
Avatar billede Hardball21 Nybegynder
06. maj 2009 - 11:25 #10
Hej igen,

Jeg har lige checket min D2007 og Jeg bruger Indy v10.1.5

Har fundet en anden tråd hos CodeGear hvor der bliver foreslået en opdatering til v10.2.3 (kender den ikke selv) som skulle have en ny 'HTML Message Builder' class.
https://forums.codegear.com/thread.jspa?messageID=7802

Har du checket INDY documentationen? (http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=index.html)
Avatar billede spil2vind Nybegynder
06. maj 2009 - 11:30 #11
OK tak, men det ligner nu mest C code, kan du hjælpe med delphi eksempel?
Avatar billede spil2vind Nybegynder
09. maj 2009 - 11:47 #12
Er der slet ikke nogen som har gode ideer til løsning af mit problem?

Jeg bruger delphi 2009 og indy 10
Avatar billede kroning Nybegynder
09. maj 2009 - 12:28 #13
Kan du ikke hente demoen her:
http://www.indyproject.org/Sockets/Demos/index.EN.aspx

og se hvordan det skal laves.
Avatar billede spil2vind Nybegynder
09. maj 2009 - 13:55 #14
Hvis det var så nemt, så havde jeg altså gjort det. har gennemgået så meget dokumentation uden at få det til at virke, kan sagtens attache en fil til emailen, men det er jo ikke lige det jeg ønsker, men at den bliver inkluderet i mail.body
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester