Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Aktivasyon E-postası oluşturma
#1
delphide hazırladığımız bir program smpt ile e-posta oluşturup gönderebiliyor bunun birçok örneği mevcut fakat bu tip e-postaların gönderdiğiniz kişiye ulaşması için e-posta ayarlarını düzenlemesi gerekli.. hazırladığımız bir uygulama için aktivasyon maili göndermek istiyorum bunun için mail servisi kullanmak lazım sanırım.. nasıl bir yol izlemeliyim?
Cevapla
#2
Bende yapacağım yakında bunu, özellikle belirtmek gerekiyor mutlaka spam/junk klasörünüze düşmüş olabilir gibi.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#3
(07-11-2016, Saat: 19:10)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBende yapacağım yakında bunu, özellikle belirtmek gerekiyor mutlaka spam/junk klasörünüze düşmüş olabilir gibi.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, IdSSLOpenSSL, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, IdComponent, IdTCPConnection,
  IdTCPClient, IdMessageClient, IdSMTP, IdBaseComponent, IdMessage, IdHTTP,
  DB, ADODB, IdIOHandler,
  IdServerIOHandler, IdIOHandlerSocket, Grids, DBGrids,
  IdExplicitTLSClientServerBase, IdSMTPBase, IdIOHandlerStack, IdSSL;

type
  TForm1 = class(TForm)
    btn1: TButton;
    mmoMAIL_TEXT: TMemo;
    QRY_MAIL_AYARLARI: TADOQuery;
    QRY_MAIL_AYARLARIMAIL_KIMLIK: TAutoIncField;
    QRY_MAIL_AYARLARICALISILAN_FIRMA: TStringField;
    QRY_MAIL_AYARLARIISLEM_TARIHI: TStringField;
    QRY_MAIL_AYARLARIEKLEYEN: TStringField;
    QRY_MAIL_AYARLARIADINIZ: TStringField;
    QRY_MAIL_AYARLARIE_MAIL_ADRES: TStringField;
    QRY_MAIL_AYARLARIGELEN_SUNUCU: TStringField;
    QRY_MAIL_AYARLARIGIDEN_SUNUCU: TStringField;
    QRY_MAIL_AYARLARIKULLANICI_ADI: TStringField;
    QRY_MAIL_AYARLARIKULLANICI_SIFRE: TStringField;
    QRY_MAIL_AYARLARIGELEN_SUNUCU_PORT: TBCDField;
    QRY_MAIL_AYARLARIGIDEN_SUNUCU_PORT: TBCDField;
    QRY_MAIL_AYARLARIGELEN_SIFRE_TURU: TStringField;
    QRY_MAIL_AYARLARIGIDEN_SIFRE_TURU: TStringField;
    dbgrd1: TDBGrid;
    ds1: TDataSource;
    lbl2: TLabel;
    lbl1: TLabel;
    edtE_MAIL_ADRESI_TEXT: TEdit;
    edtKONU: TEdit;
    btn2: TButton;
    mmoDURUM: TMemo;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    EPosta: TIdMessage;
    SMTP: TIdSMTP;
    procedure btn1Click(Sender: TObject);
    procedure EPostaInitializeISO(var VHeaderEncoding: Char;
      var VCharSet: String);
  private
    { Private declarations }
    procedure EPostaIcerikHazirla(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses IdText, IdAttachmentFile;
{$R *.dfm}

procedure TForm1.EPostaIcerikHazirla(Sender: TObject);
begin
  //\\ aşağıya alınacak EPosta.CharSet := 'iso-8859-9'; // 'utf-8';
  if Sender = btn1 then
  begin
    EPosta.Body.Text := mmoMAIL_TEXT.Lines.Text;
    EPosta.ContentType := 'text/plain';
    EPosta.CharSet := 'iso-8859-9'; // 'utf-8'; //\\ Bu satır yukarıdan buraya alındı
  end else
  begin
    if Sender = btn1 then
    begin
      EPosta.ContentType := 'multipart/alternative';
      with TIdText.Create(EPosta.MessageParts, nil) do
      begin
        Body.Text :=
          '<html><body>' + mmoMAIL_TEXT.Lines.Text +
          '. <B>KALIN YAZI</B><U>ALTI ÇİZGİLİ YAZI</U>' +
          '<I>İTALİK YAZI</I></body></html>';
        CharSet := 'utf-8';
        ContentType := 'text/html';
      end;
    end else
    begin
      // İçine resim gömülü HTML
      EPosta.ContentType := 'multipart/related; type="text/html"';
      with TIdText.Create(EPosta.MessageParts, nil) do
      begin
        Body.Text :=
          '<html><body>' + mmoMAIL_TEXT.Lines.Text +
          '. <B>KALIN YAZI</B><U> ALTI ÇİZGİLİ YAZI</U>' +
          '<I>İTALİK YAZI </I><br />' +
          '<img src="cid:12345"></body></html>';
        CharSet := 'utf-8';
        ContentType := 'text/html';
      end;
      // ContentID'nin yukarıdaki cid:12345 teki id ile aynı olmasına dikkat edin.
      with TIdAttachmentFile.Create(EPosta.MessageParts, ExtractFilePath(Application.ExeName) + 'resim1.jpg') do
      begin
        ContentID := '12345';
        ContentType := 'image/jpeg';
        FileName := 'resim1.jpg';
      end;
    end;
  end;

  // Ayarları e-posta olarak göndermek istersek...
  (*
  EPosta.Body.Text :=
    'Deneme mesajı başarı ile gönderildi.' + #13 + #10 + #13 + #10 +
    'Host: ' + SMTP.Host + #13 + #10 +
    'Port: ' + IntToStr(SMTP.Port) + #13 + #10 +
    'Gönd. E-Posta: ' + EditUSER.Text + #13 + #10 +
    'User: ' + EditUSER.Text + #13 + #10 +
    'Password: ' + EditPASSWORD.Text;
  *)
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  inherited;
  mmoDURUM.Lines.Clear;
  Application.ProcessMessages;
  mmoDURUM.Lines.Add('SMTP Test.');
  try
    if SMTP.Connected then SMTP.Disconnect;

    //\\SMTP.Host := QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SUNUCU').Text; //EditHOST.Text;
    SMTP.AuthType := satDefault; //\\
    //\\SMTP.AuthType := atDefault;
    //\\SMTP.Username := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text; //EditUSER.Text;
    //\\SMTP.Password := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_SIFRE').Text; //EditPASSWORD.Text;

    SMTP.Host := 'smtp.yandex.com';
    SMTP.Username := '*******';
    SMTP.Password := '*******';

    SMTP.Port := 25;
    SMTP.Port := 587; //\\
    //\\if StrToIntDef(QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SUNUCU_PORT').Text, -1) > 0 then SMTP.Port := StrToInt(QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SUNUCU_PORT').Text);

    // SSL ayarları
    //\\if QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SIFRE_TURU').Text = 'Yok' then
    if 1 = 2 then //\\
    begin
      SMTP.UseTLS := utNoTLSSupport;
      SMTP.IOHandler := nil;
      SMTP.ConnectTimeout := 3000;
    end else
    begin
      mmoDURUM.Lines.Add('SMTP Test - SSL ayarları yapılıyor.');
      LHandler.Destination := SMTP.Host + ':' + IntToStr(SMTP.Port);
      LHandler.Host := SMTP.Host;
      LHandler.Port := SMTP.Port;
      LHandler.DefaultPort := 0;
      LHandler.SSLOptions.Method := sslvTLSv1;
      LHandler.SSLOptions.Mode := sslmUnassigned; // sslmClient;
      LHandler.SSLOptions.VerifyMode := [];
      LHandler.SSLOptions.VerifyDepth := 0;
      SMTP.IOHandler := LHandler;
      //\\if QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SIFRE_TURU').Text = 'SSL' then SMTP.UseTLS := utUseImplicitTLS;
      //\\if QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SIFRE_TURU').Text = 'TSL' then SMTP.UseTLS := utUseExplicitTLS;
      SMTP.UseTLS := utUseExplicitTLS; //\\
    end;

    SMTP.ConnectTimeout := 10000;

    mmoDURUM.Lines.Add('SMTP Test - Bağlanılıyor.');
    SMTP.Connect;

    mmoDURUM.Lines.Add('SMTP Test - Deneme e-postası gönderiliyor.');

    EPosta.Clear;
    EPosta.From.Address := SMTP.Username; //\\ QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text; //EditUSER.Text;
    EPosta.From.Name := SMTP.Username; //\\ QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text + ' deneme kullanıcısı.';
    EPosta.ReplyTo.EMailAddresses := SMTP.Username; //\\ QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text + ' deneme kullanıcısı.';
    //EPosta.ReplyTo.Name := EditUSER.Text;

    with EPosta.Recipients.Add do
    begin
      if edtE_MAIL_ADRESI_TEXT.Text > '' then
      begin
        Name := edtE_MAIL_ADRESI_TEXT.Text;
        Address := edtE_MAIL_ADRESI_TEXT.Text;
      end else
      begin
        Name := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text;
        Address := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text;
      end;
    end;
    EPosta.Subject := edtKONU.Text;
    EPostaIcerikHazirla(Sender);

    SMTP.Send(EPosta);
    mmoDURUM.Lines.Add('Bağlantı başarılı. "' + edtE_MAIL_ADRESI_TEXT.Text + '" adresine bir deneme e-postası gönderilmiştir.');
  finally
    mmoDURUM.Lines.Add('SMTP Test - Bağlantı sonlandırılıyor.');
    if SMTP.Connected then SMTP.Disconnect;
  end;
  ShowMessage('E-posta gönderildi.');
end;

procedure TForm1.EPostaInitializeISO(var VHeaderEncoding: Char;
  var VCharSet: String);
begin
  //\\ Burası yeni eklendi
  VCharSet := 'utf-8'; // 'iso-8859-9';
end;

end.

İnternette tarattığımda bu kod örneği ile karşılaştım ve kullandım evet eposta gidiyor dediğiniz gibi gereksizler kutusuna düşüyor.. bu pek istenne bir durum değil..

Gelen kutusuna düşmesi için ne yapmak lazım şu an bulabilmiş değilim ama codeRageX'in hazırladığı bi videoyu izliyorum şimdi Amozon Web Services ile mail gönderiyor çözebilirsem burda paylaşıtım inşallah
Cevapla
#4
İndy komponetleri ile yapmış, ben de yapmıştım pop3ten attığım için spama düşmemişti.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#5
(07-11-2016, Saat: 19:45)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİndy komponetleri ile yapmış,  ben de yapmıştım pop3ten attığım için spama düşmemişti.

yaptığınız örneği görebilmemiz mümkünmüdür peki üstadım
Cevapla
#6
(07-11-2016, Saat: 20:05)bilrax Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(07-11-2016, Saat: 19:45)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİndy komponetleri ile yapmış,  ben de yapmıştım pop3ten attığım için spama düşmemişti.

yaptığınız örneği görebilmemiz mümkünmüdür peki üstadım

Yarın bulup atayım.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#7
eyvallah üstadım.. bekliyorum
Cevapla
#8
Delphiye yeni başladığım dönemlerde yazmıştım biraz tarzanca, ama çalışıyor Smile   
Bazı bölümleri gerçekten hatırlayamadım not aldım üzerinde.

procedure TForm7.htmlmailsend(mail: string);
var
  ImagePart: TIdAttachmentFile;
  HtmlPart: TIdText;
  i: Integer;
begin
  try
    idMessage1.Clear;
    IdMessage1.From.Address := 'yakup@xxx.com.tr';
    IdMessage1.Recipients.EMailAddresses := mail;
    // IdMessage1.BccList.Add.Address := '';  Gizli CC
    // IdMessage1.CCList.Add.Address :='';   CC
    IdMessage1.Subject := Edit1.TEXT;

    HtmlPart := TIdText.Create(IdMessage1.MessageParts);
    HtmlPart.ContentType := 'text/html';
    HtmlPart.CharSet := 'iso-8859-9';
    HtmlPart.Body.LoadFromFile(htmlpath);  //bir html dosyası oluşturdum mailde bu html dosyası gidiyor.


  // Yanlış hatırlamıyor isem burada ek olarak göndereceğim dosyalar seçip bir listboxa dizinlerini ekliyordum ve maile eklenti olarak ekliyordum.
    try
      for i := 0 to ListBox1.Count - 1 do
        TIdAttachmentFile.Create(IdMessage1.MessageParts,
          ListBox1.Items.Strings[i]);
    except
      on E: Exception do
        ShowMessage(E.Message);
    end;

    //ImagePart  ile ne yaptığımı hatırlayamadım.
    ImagePart := TIdAttachmentFile.Create(IdMessage1.MessageParts, filepath);
    ImagePart.ContentType := 'image/png';
    ImagePart.ContentDisposition := 'inline';
    ImagePart.ExtraHeaders.Values['content-id'] := ExtractFileName(pitcurepath);
    ImagePart.DisplayName := ExtractFileName(pitcurepath);
    try
      begin
        IdSMTP1 := TIdSMTP.Create(nil);
        IdSMTP1.Host := 'mail.xxxx.com.tr';
        IdSMTP1.Port := 587;
        IdSMTP1.Username := 'yakup@xxxxx.com.tr';
        IdSMTP1.password := 'xxxxxx';
        IdSMTP1.AuthType := SatDefault;
        IdSMTP1.ConnectTimeout := 1000;
        IdSMTP1.Connect();
        IdSMTP1.Send(IdMessage1);
        ImagePart.Free;
      end;
    except
      on E: Exception do
    end;
  finally
    if IdSMTP1.Connected then
      IdSMTP1.Disconnect;
  end;
end;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#9
oldukca sade ve anlaşılır bence, gereksiz laf kalabalığı olmamış.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FTP ağaç görünümü oluşturma dicle_gsm 4 210 13-01-2018, Saat: 16:45
Son Yorum: dicle_gsm
  Birden fazla database oluşturma dilo 2 164 28-11-2017, Saat: 16:54
Son Yorum: hyperxman
  Activex Kullanma veya oluşturma Lord_Ares 4 420 25-05-2017, Saat: 16:31
Son Yorum: Lord_Ares
  Oto toplu db oluşturma hido 6 567 09-03-2017, Saat: 18:53
Son Yorum: hido
  Delphi XML Oluşturma Mericx 3 726 14-01-2017, Saat: 22:43
Son Yorum: esrehmaan



Konuyu Okuyanlar: 1 Ziyaretçi