delphi2007 - indy 10 ile mail gonderimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

delphi2007 - indy 10 ile mail gonderimi

Mesaj gönderen akdatilla »

merhaba
Daha once mail gonderimi ile ilgili konular işlenmiş .
Konu kalabalığı olacak ama biraz uğraşmama rağmen bu basit işlemi halen yapamadım
aşağıdaki gibi bir fonksiyon ile mail gondermeye çalışıyorum. Server name, kullanıcı adı ve parola bililerini ayarladım.
Ancak halen mail gitmiyor. Hata mesajı olarak authentication failed bilgisini alıyorum.
Yardımcı olurmusunuz nerde hata yapıyorum acaba.

Kod: Tümünü seç

procedure TMailGondericiF.MailGonder(alicimailleri,fromadres,fromisim,gonderenadres,gonderenadi,
    konu,mesajbody:String);
begin
     IdMessage1.Recipients.EMailAddresses:=alicimailleri;
     IdMessage1.From.Address:=fromadres;
     IdMessage1.From.Name:=fromisim;

     IdMessage1.Sender.Address:=gonderenadres;
     IdMessage1.Sender.Name:=gonderenadi;

     IdMessage1.ContentType:='text/html'; //bir çok farklı modda göndeebilirsin delphi help i incele
     IdMessage1.Subject :=konu;
     IdMessage1.Body.Clear;
     IdMessage1.Body.Text:=mesajbody;
     ///AddStrings(mesajbody); //burada ben HTML formatındaki bir mailimi TStrinList tipinde liste adındaki bir nesneye yükledim ve body olarak kullandım
     // eğer dosya eklerin varsa ,
     //IdMessage1.MessageParts.Clear;
     //TIdAttachment.Create(IdMessage1.MessageParts,'eklenecek dosya yolu');
     IdSMTP1.AuthType:=atDefault;
     IdSMTP1.Host:=mailserveradi; // veya adresi
     IdSMTP1.Username:= hesapadi;

     IdSMTP1.Password:=hesapsifresi;
     try
        IdSMTP1.Connect;
        if IdSMTP1.Authenticate then
        IdSMTP1.Send(IdMessage1); //burada yukarıda oluşturduğumuz IdMessage yi IdSMTP ile gönderiyoruz
     except
     end;
     if IdSMTP1.Connected then
     IdSMTP1.Disconnect;
end;
form uzerindeki indy nesneleri ve ayarları:

Kod: Tümünü seç

object IdSMTP1: TIdSMTP
    OnStatus = IdSMTP1Status
    OnFailedRecipient = IdSMTP1FailedRecipient
    SASLMechanisms = <>
    Left = 64
    Top = 8
  end
  object IdMessage1: TIdMessage
    AttachmentEncoding = 'UUE'
    BccList = <>
    CCList = <>
    Encoding = meDefault
    FromList = <
      item
      end>
    Recipients = <>
    ReplyTo = <>
    ConvertPreamble = True
    Left = 104
    Top = 8
  end
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: delphi2007 - indy 10 ile mail gonderimi

Mesaj gönderen akdatilla »

Ana program dışında ayrı bir test programı yaptım. Fonksiyonu aşağıdaki şekliyle tekrar denedim mail gonderdi.

Kod: Tümünü seç

procedure TMailGondericiF.MailGonder(alicimailleri,fromadres,fromisim,gonderenadres,gonderenadi,
    konu,mesajbody:String);
begin
     IdMessage1.Recipients.EMailAddresses:=alicimailleri;
     IdMessage1.From.Address:=fromadres;
     IdMessage1.From.Name:=fromisim;

     IdMessage1.Sender.Address:=gonderenadres;
     IdMessage1.Sender.Name:=gonderenadi;

     IdMessage1.ContentType:='text/html'; //bir çok farklı modda göndeebilirsin delphi help i incele
     IdMessage1.Subject :=konu;
     IdMessage1.Body.Clear;
     IdMessage1.Body.Text:='<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>'+mesajbody+'</body></html>';
     ///AddStrings(mesajbody); //burada ben HTML formatındaki bir mailimi TStrinList tipinde liste adındaki bir nesneye yükledim ve body olarak kullandım
     // eğer dosya eklerin varsa ,
     //IdMessage1.MessageParts.Clear;
     //TIdAttachment.Create(IdMessage1.MessageParts,'eklenecek dosya yolu');
     IdSMTP1.AuthType:=atDefault;
     IdSMTP1.Host:=mailserveradi; // veya adresi
     IdSMTP1.Username:= hesapadi;
     IdSMTP1.ConnectTimeout:=2000;
     IdSMTP1.Port:=25;
     IdSMTP1.Password:=hesapsifresi;
     try
        IdSMTP1.Connect;
        //if IdSMTP1.Authenticate then
        IdSMTP1.Send(IdMessage1); //burada yukarıda oluşturduğumuz IdMessage yi IdSMTP ile gönderiyoruz
     except
     end;
     if IdSMTP1.Connected then
     IdSMTP1.Disconnect;
end;
Cevapla