Indy ile gömülü resim içeren html mail gönderme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Indy ile gömülü resim içeren html mail gönderme

Mesaj gönderen csunguray »

Delphi 7, Indy 10 kullanılmıştır.

Mail gönderme kodlarımız:

Kod: Tümünü seç

procedure Mailgonder;
var
  ImagePart: TIdAttachmentFile;
  HtmlPart:TIdText;
begin
    try
    //setup mail message
    // Burada EPosta componenti TIdMessage tipinden. Form üzerinde duruyor.
    EPosta.Clear;
    EPosta.From.Address := 'info@bizimsirket.com';
    EPosta.From.Name := 'Bizim Şirket Ltd. Şti.' ;
    EPosta.ReplyTo.EMailAddresses:= EPosta.From.Address;
    EPosta.Recipients.EMailAddresses := 'alici@aliciltd.com';
    EPosta.Subject := 'Buraya mail konusu yazılacak';

    //[b] İşin sırrı burada işte [/b]
    EPosta.ContentType:='multipart/related; type="text/html"';

    EPosta.Body.Text := '';
    EPosta.CharSet := 'iso-8859-9'; // Türkçe ayarı

    // Burada HtmlPart, TIdText türünden

    HtmlPart := TIdText.Create(EPosta.MessageParts);
    HtmlPart.ContentType := 'text/html';
    HtmlPart.CharSet := 'iso-8859-9';

    HtmlPart.Body.LoadFromFile('c:\test.html'); // Burada mail içeriği bir dosyadan yükleniyor

    // html dosyası içerisindeki image linkleri <IMG SRC="cid:logo.jpg"> şekline çevrilmeli
    ImagePart := TIdAttachmentFile.Create(EPosta.MessageParts, 'c:\logo.jpg');
    ImagePart.ContentType := 'image/jpeg';
    ImagePart.ContentDisposition := 'inline';
    ImagePart.ExtraHeaders.Values['content-id'] := ExtractFileName('c:\logo.jpg');
    ImagePart.DisplayName := ExtractFileName('c:\logo.jpg');

    SMTP1.Host := 'mail.bizimsirket.com';
    SMTP1.AuthType := atDefault;
    SMTP1.Username := 'info@bizimsirket.com';
    SMTP1.Password := 'xxxxxx';
    SMTP1.Port := 25;
    SMTP1.ConnectTimeout:=2000;
    SMTP1.Connect;
    SMTP1.Send(EPosta);
  except
     raise;
  end;
end;   

HTML dosyasını içeriği (Yani c:\test.html)

Kod: Tümünü seç

<html>

<head>
<meta http-equiv="Content-Language" content="tr">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
<title>Deneme postası</title>
</head>

<body>

<p>Deneme Postası</p>
<p><img src="cid:logo.jpg"></p>
<p>Merhaba Dünya</p>

</body>

</html>
Konunun Türkçe harfleri doğru göstermesi için EPosta bileşeninin OnInitializeISO event ına:

Kod: Tümünü seç

procedure TForm1.EPostaInitializeISO(var VHeaderEncoding: Char;
  var VCharSet: String);
begin
  VCHarSet := 'iso-8859-9';
end;
Takılırsanız soru sormaya çekinmeyin.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Indy ile gömülü resim içeren html mail gönderme

Mesaj gönderen sadettinpolat »

"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Indy ile gömülü resim içeren html mail gönderme

Mesaj gönderen barutali »

arkadaşlar html mail gönderilimi ile ilgili sorunum yok içine resmide gömüyorum orda da sorun yok ama her gönderimde encode ediyor ve bu gönderimi o kadar çok yavaşlatıyorki ingilizce türkçe tüm kaynaklara baktım nerdese indy den mi kaynaklanıyor acaba bu durum ?
amatör küme programcı :D
Cevapla