Kendi Mail Gönderme Programınızı Yapın - Delphi7

Katılım
7 Hzr 2006
Mesajlar
36,713
Beğeniler
8,954
Takım
GALATASARAY
#1
Öncelikle şunu belirtmeliyim ki programdan sağlık verimli alabilmeniz için SMTP desteği veren bir mailiniz olması gerekir. Eğer bir hosting sahibiyseniz size host firması bu desteği zaten veriyordur.

Ücretsiz SMTP desteği veren hotpop.com var ancak çok sağlıksız çalışıyor.

Burada tanıttığım program da aynı mantıkla çalışıyor. Tek farkı eklenti eklenebilmesi.

Programımıza geçelim. Çok yeni olsanız bile anlayacağınız şekilde anlatıyorum.

Form üzerine Standart sekmesinde bulunan bileşenlerden 4 adet Edit, 1 adet Memo, 2 adet Button yerleştiriyoruz. Bir de mail gönderme durumumuzu gösteren Label bileşeni ekliyoruz. (Edit kutuları açıklamaları için de kendinize göre labeller girebilirsiniz)

Şimdi Indy Clients sekmesinden bir adet IdSMTP, ve Indy Misc sekmesinden bir adet IdMessage bileşeni ekliyoruz.

Artık formumuz yaklaşık alttaki gibi görünüyor olmalı. Siz tabii farklı bir yerleşim seçebilirsiniz.

Form üzerine yerleştirdiğimiz IdSMTP1 bileşenini seçili hale getirip Object Inspector > Properties sekmesinden gerekli ayarları yapıyoruz. Buradaki ayarlar;

AuthenticationType : atLogin
Host : SMTP destekli host adresi (SMTP ayarlarında bunun nasıl girileceği zaten gösteriliyor)
Password : Mail adresimizin şifresi
Usarname : Mail adresimiz.

Bu işlemde bittiğine göre "Gönder" butonuna tıklayarak mailimizi göndermek için gerekli kodları girmek kaldı.

Form üzerine yerleştirdiğimiz botonlardan birinin Caption özelliğine Gönder, diğerine Kapat yazalım.

Şimdi Button1'e çift tıklayıp OnClick yordamına şu kodları girin.

Kod:
  IdMessage1.From.Address := Edit1.Text;
  IdMessage1.Recipients.EMailAddresses := Edit2.Text;
  IdMessage1.BccList.Add.Address := Edit3.Text;
  IdMessage1.Subject := Edit4.Text;
  IdMessage1.Body.Text := Memo1.Text;

  try
    try
      Label6.Caption := 'Lütfen Bekleyiniz ...';
      IdSMTP1.Connect(1000);
      IdSMTP1.Send(IdMessage1);
    except on E:Exception do
      Label6.Caption := 'Server meşgul. Daha sonra deneyin!';
     end;
  finally
    Label6.Caption := 'MESAJINIZ GÖNDERİLDİ';
    if IdSMTP1.Connected then IdSMTP1.Disconnect;
  end;
F12 ye basıp form ekranına dönün ve Button2'ye çift tıklayıp OnClikk yordamına;
Kod:
Close;
yazdık.

İşlemimiz bu kadar. Artık F9 'a basıp programımızı derleyebilir ve hemen kendi mailimize bir ileti göndermekle deneme yapabiliriz.

Kolay gelsin.

Bu programla ilgili kaynak kodları BURADAN indirebilirsiniz.

Program derlenmiş halede şu şekilde görünecek.



Form kaynak kodları yaklaşık alttaki şekilde görünüyor olmalı.
Kod:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Memo1: TMemo;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  IdMessage1.From.Address := Edit1.Text;
  IdMessage1.Recipients.EMailAddresses := Edit2.Text;
  IdMessage1.BccList.Add.Address := Edit3.Text;
  IdMessage1.Subject := Edit4.Text;
  IdMessage1.Body.Text := Memo1.Text;

  try
    try
      Label6.Caption := 'Lütfen Bekleyiniz ...';
      IdSMTP1.Connect(1000);
      IdSMTP1.Send(IdMessage1);
    except on E:Exception do
      Label6.Caption := 'Server meşgul. Daha sonra deneyin!';
     end;
  finally
    Label6.Caption := 'MESAJINIZ GÖNDERİLDİ';
    if IdSMTP1.Connected then IdSMTP1.Disconnect;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

end.
 
Katılım
18 Hzr 2009
Mesajlar
1
Beğeniler
0
Yaş
33
#3
ya kardeş ben gmail in smtp si nasıl olacak bilmiyorum ve "smtp.gmail.com" yazdım ama mail gelmedi. bir yardımcı olabilir misin rica etsem.
 
Katılım
7 Hzr 2006
Mesajlar
36,713
Beğeniler
8,954
Takım
GALATASARAY
#4
GMail smtp ile birçok deneme yaptım ancak sonuç alamadım. Program anlatımında belirtmiştim, eğer bir web site sahibiyseniz host firmanız size zaten bu hizmeti sunacaktır. Mail gönderebilmek için en sağlıklı yöntem bu görünüyor.

Ayrıca mail göndermek için gönderen kısmına kendi mailinizi yazmak zorunda kalmıyorsunuz. Yani istediğiniz mail adresini gönderen kısmına yazabiliyorsunuz. Aslında bu çalışmanın eğlenceli tarafı da bu zaten.
 
Katılım
13 Ock 2011
Mesajlar
10
Beğeniler
0
#7
selam arkdaşlar ben progrmamı çalıştırııyorum
kodların IdSMTP1.Send(IdMessage1); bu kısmınta hata veriyor bana yardımcı olurmusunuz...
 
Katılım
7 Hzr 2006
Mesajlar
36,713
Beğeniler
8,954
Takım
GALATASARAY
#8
Hocam kendi SMTP ayarlarınıza göre düzenlemeniz gerekiyor o bölümü. İlk konuda ilgili resmi vermiştik. Oradaki ayarları düzgün yaparsanız sorunsuz çalışacaktır.
 
Katılım
13 Ock 2011
Mesajlar
10
Beğeniler
0
#9
Hocam şifreleme bölümünde mail göndereceğimiz şifremizimi girecez..?
o bölüm biraz kafamı karıştırdı da yardımcı olursanız sevinirim..
Teşekkür ederim...
 
Katılım
22 Ock 2011
Mesajlar
1
Beğeniler
0
Yaş
32
#10
ya hocam herseyı aynen yaptım smtp olark smtp.cerezforum.com


kulandım socket 110001 erorr verıyor ya...
 

Benzer konular

Top