smtp ssl ile yandex üzerinden mail gönderme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen csunguray »

Projenin Delphi 7 de derlenen halini eke koyuyorum. Ama hala Indy bileşenlerinin sürümü ile ilgili sorununuz devam edecektir. Verdiğim linklere bakarak sorunu kolaylıkla giderebilirsiniz.
SmtpTest.rar
(150.65 KiB) 71 kere indirildi
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/)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

tamam proje çalıştı amaşimdide aşağıdaki hatayı veriyor ya bir türlü olmadı valla :(


Resim
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen csunguray »

Sisteminiz 32 bit mi 64 bit mi? Sisteminiz 64 bit olsa bile Delphi 7 sadece 32 bit exe ler ürettiği için ssleay32.dll ve libeay32.dll dosyalarının 32 bit olan sürümünü kullanmalısınız. Normalde bu DLL ler exe mizin olduğu klasörde olunca program sorunsuz çalışıyor. Eğer sorun yaşıyorsanız bir de C:\Windows\System32 klasörüne kopyalayarak programı çalıştırmayı deneyin.
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/)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

tamam dediğini gibiymiş oldu çok teşekkür ederim :)
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen csunguray »

Sorun neymiş? Açıklarsanız forumu takip edenler de aydınlanmış olur. 32 ve 64 bit sorunu mu? Yoksa DLL leri koyduğunuz klasör sorunu mu?
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/)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

hocam sorunsuz çalışıyor teşekkür ederim.

yanlı türkçe karakter sorunu var nasıl çözebilirim ?

örn.
haným
Ulaþýlmadýðým / ulaþamadýðým
Saygýlarýmla

Kod: Tümünü seç

unit E_MAIL_GONDER_PENCERE1;

interface

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

type
  TE_MAIL_GONDER_PENCERE = class(TForm)
    edtE_MAIL_ADRESI_TEXT: TEdit;
    label2: TLabel;
    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;
    edtKONU: TEdit;
    lbl1: TLabel;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    EPosta: TIdMessage;
    SMTP: TIdSMTP;
    btnMAIL_GONDER: TSpeedButton;
    mmoDURUM: TMemo;
    procedure FormShow(Sender: TObject);
    procedure btnMAIL_GONDERClick(Sender: TObject);

    procedure EPostaInitializeISO(var VHeaderEncoding: Char;
      var VCharSet: String);


  private
    { Private declarations }
    procedure EPostaIcerikHazirla(Sender: TObject);
  public
    { Public declarations }
  end;

var
  E_MAIL_GONDER_PENCERE: TE_MAIL_GONDER_PENCERE;

implementation

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

procedure TE_MAIL_GONDER_PENCERE.EPostaIcerikHazirla(Sender: TObject);
begin
  EPosta.CharSet := 'utf-8'; // 'iso-8859-9';
  if Sender = btnMAIL_GONDER then
  begin
    EPosta.ContentType := 'text/plain';
    EPosta.Body.Text := mmoMAIL_TEXT.Lines.Text;
  end else
  begin
    if Sender = btnMAIL_GONDER 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; 
end;

procedure TE_MAIL_GONDER_PENCERE.FormShow(Sender: TObject);
var
    MAIL_AYARLARI :String;
begin
         MAIL_AYARLARI:='';
         QRY_MAIL_AYARLARI.Close;
         MAIL_AYARLARI:=MAIL_AYARLARI+'CALISILAN_FIRMA='+QuotedStr(KULLANICI_GIRIS.qryCALISILAN_FIRMA_DB.FieldByName('KIMLIK').Text)+' and ';
         if Length(MAIL_AYARLARI)>0 then
         MAIL_AYARLARI:='where '+LeftStr(MAIL_AYARLARI,Length(MAIL_AYARLARI)-5);
         QRY_MAIL_AYARLARI.SQL.Text:='SELECT top(1) * FROM MAIL_AYARLARI '+MAIL_AYARLARI;
         QRY_MAIL_AYARLARI.Open;  {
         edtE_MAIL_ADRESI_TEXT.Text:='';
         edtKONU.Text:='';
         mmoMAIL_TEXT.Text:=''; }
end;

procedure TE_MAIL_GONDER_PENCERE.btnMAIL_GONDERClick(Sender: TObject);
begin
  inherited;
  mmoDURUM.Lines.Clear;
  Application.ProcessMessages;
  mmoDURUM.Lines.Add('Bağlantı Kuruluyor.');
  try
    if SMTP.Connected then SMTP.Disconnect;
    SMTP.Host := QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SUNUCU').Text; //EditHOST.Text;
    //SMTP.AuthType := satNone;
    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.Port := 25;
      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
    begin
      SMTP.UseTLS := utNoTLSSupport;
      SMTP.IOHandler := nil;
      SMTP.ConnectTimeout := 3000;
    end else


    begin
      mmoDURUM.Lines.Add('Bağlantı 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;
    end;

     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.ConnectTimeout := 10000;


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

    mmoDURUM.Lines.Add('E-posta gönderiliyor.');

    EPosta.Clear;
    EPosta.From.Address := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text;//EditUSER.Text;
    EPosta.From.Name := KULLANICI_GIRIS.qryCALISILAN_FIRMA_DB.fieldbyname('FIRMA_TAM_UNVANI').Text + ' (Sistem Mesajidir.)';
    EPosta.ReplyTo.EMailAddresses := 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 E-posta gönderilmiştir.');
   finally
    mmoDURUM.Lines.Add('Bağlantı sonlandırılıyor.');
    if SMTP.Connected then SMTP.Disconnect;
  end; 
end;

procedure TE_MAIL_GONDER_PENCERE.EPostaInitializeISO(var VHeaderEncoding: Char;
  var VCharSet: String);
begin
  inherited;
  VCHarSet := 'utf-8'; // 'iso-8859-9';
end;



end.
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen ertank »

Merhaba,

Kod: Tümünü seç

TIdMessage.CharSet := 'utf-8'
şeklinde bir atama yaptıktan sonra

Kod: Tümünü seç

TIdMessage.Body.Text
atamasını önce string değerleri UTF8 Encode ederek vermeniz gerekiyor sanırım.

Kod: Tümünü seç

EPosta.Body.Text := string(UTF8Encode(mmoMAIL_TEXT.Linex.Text));
Yukarıdaki örnekte olduğu şekilde metin e-mail göndermeyi deneyin. Çalıştığını gördükten sonra diğer bölümlerde de gerekli düzeltmeleri yaparsınız.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen csunguray »

Veya Charset leri 8859-9 olarak belirleyin. Yine düzelecektir.

Kod: Tümünü seç

EPosta.CharSet := 'iso-8859-9';
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/)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

Cevaplarınız için çok teşekkür ederim fakat olmadı bir türlü her defasında aynı sorun :(

Kod: Tümünü seç

unit E_MAIL_GONDER_PENCERE1;

interface

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

type
  TE_MAIL_GONDER_PENCERE = class(TForm)
    edtE_MAIL_ADRESI_TEXT: TEdit;
    label2: TLabel;
    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;
    edtKONU: TEdit;
    lbl1: TLabel;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    EPosta: TIdMessage;
    SMTP: TIdSMTP;
    btnMAIL_GONDER: TSpeedButton;
    mmoDURUM: TMemo;
    lblDURUM: TLabel;
    procedure FormShow(Sender: TObject);
    procedure btnMAIL_GONDERClick(Sender: TObject);

    procedure EPostaInitializeISO(var VHeaderEncoding: Char;
      var VCharSet: String);


  private
    { Private declarations }
    procedure EPostaIcerikHazirla(Sender: TObject);
  public
    { Public declarations }
  end;

var
  E_MAIL_GONDER_PENCERE: TE_MAIL_GONDER_PENCERE;

implementation

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

procedure TE_MAIL_GONDER_PENCERE.EPostaIcerikHazirla(Sender: TObject);
begin
  EPosta.CharSet := 'utf-8';
  EPosta.Body.Text := string(UTF8Encode(mmoMAIL_TEXT.LineS.Text));
  EPosta.ContentType := 'text/plain';
end;


procedure TE_MAIL_GONDER_PENCERE.FormShow(Sender: TObject);
var
    MAIL_AYARLARI :String;
begin
         MAIL_AYARLARI:='';
         QRY_MAIL_AYARLARI.Close;
         MAIL_AYARLARI:=MAIL_AYARLARI+'CALISILAN_FIRMA='+QuotedStr(KULLANICI_GIRIS.qryCALISILAN_FIRMA_DB.FieldByName('KIMLIK').Text)+' and ';
         if Length(MAIL_AYARLARI)>0 then
         MAIL_AYARLARI:='where '+LeftStr(MAIL_AYARLARI,Length(MAIL_AYARLARI)-5);
         QRY_MAIL_AYARLARI.SQL.Text:='SELECT top(1) * FROM MAIL_AYARLARI '+MAIL_AYARLARI;
         QRY_MAIL_AYARLARI.Open;  {
         edtE_MAIL_ADRESI_TEXT.Text:='';
         edtKONU.Text:='';
         mmoMAIL_TEXT.Text:=''; }
end;

procedure TE_MAIL_GONDER_PENCERE.btnMAIL_GONDERClick(Sender: TObject);
begin
  inherited;
  mmoDURUM.Lines.Add('');
  Application.ProcessMessages;
  mmoDURUM.Lines.Add('Bağlantı Kuruluyor.');
  try
    if SMTP.Connected then SMTP.Disconnect;
    SMTP.Host := QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SUNUCU').Text; //EditHOST.Text;
    //SMTP.AuthType := satNone;
    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.Port := 25;
      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
    begin
      SMTP.UseTLS := utNoTLSSupport;
      SMTP.IOHandler := nil;
      SMTP.ConnectTimeout := 3000;
    end else


    begin
      mmoDURUM.Lines.Add('Bağlantı 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;
    end;

     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.ConnectTimeout := 10000;


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

    mmoDURUM.Lines.Add('E-posta gönderiliyor.');

    EPosta.Clear;
    EPosta.From.Address := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text;//EditUSER.Text;
    EPosta.From.Name := KULLANICI_GIRIS.qryCALISILAN_FIRMA_DB.fieldbyname('FIRMA_TAM_UNVANI').Text + ' (Sistem Mesajidir.)';
    EPosta.ReplyTo.EMailAddresses := 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 E-posta gönderilmiştir.');
   finally
    mmoDURUM.Lines.Add('Bağlantı sonlandırılıyor.');
    if SMTP.Connected then SMTP.Disconnect;
  end; 
end;

procedure TE_MAIL_GONDER_PENCERE.EPostaInitializeISO(var VHeaderEncoding: Char;
  var VCharSet: String);
begin
  inherited;
  VCHarSet := 'utf-8'; // 'iso-8859-9';
end;



end.
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen ertank »

Sıralamayı aşağıdaki şekilde değiştirebilir misiniz?

Kod: Tümünü seç

  EPosta.ContentType := 'text/plain';
  EPosta.CharSet := 'utf-8';
  EPosta.Body.Text := string(UTF8Encode(mmoMAIL_TEXT.LineS.Text));
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

yine olmadı :( böyle çıkıyor

türlü görüşemedik
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen ertank »

1- mmoMAIL_TEXT içindeki ifadeyi siz el ile mi yazıp test ediyorsunuz? Yoksa bir dosyadan mı içine yüklüyorsunuz?

2- @csunguray bey'in önerdiği ISO karakter setini denediniz mi? Eğer ISO karakter seti kullanacaksanız dönüşüm yapmanıza gerek yok.

Kod: Tümünü seç

EPosta.ContentType := 'text/plain';
EPosta.CharSet := 'iso-8859-9';
EPosta.Body.Text := mmoMAIL_TEXT.LineS.Text;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

Merhaba,

Memo içine giriş yapıyorum.

@csunguray bey'in önerisinide denedim aynı.

Teşekkürler
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen ertank »

"EPostaInitializeISO" prosedürünü kaldırıp UTF-8 ve ISO, iki şekilde de deneyebilir misiniz?

Güncelleme: Birde aşağıdaki şekilde deneyebilir misiniz? Indy10 karakter seti dönüşümünü kendi içinde yapıyor olabilir.

Kod: Tümünü seç

EPosta.ContentType := 'text/plain';
EPosta.CharSet := 'UTF-8';
EPosta.Body.Text := mmoMAIL_TEXT.LineS.Text;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: smtp ssl ile yandex üzerinden mail gönderme

Mesaj gönderen erdogan_ozkaya »

yok hocam ya ne denediysem olmadı kod aşağıdaki gibi hepsi.

Kod: Tümünü seç

unit E_MAIL_GONDER_PENCERE1;

interface

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

type
  TE_MAIL_GONDER_PENCERE = class(TForm)
    edtE_MAIL_ADRESI_TEXT: TEdit;
    label2: TLabel;
    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;
    edtKONU: TEdit;
    lbl1: TLabel;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    EPosta: TIdMessage;
    SMTP: TIdSMTP;
    btnMAIL_GONDER: TSpeedButton;
    mmoDURUM: TMemo;
    lblDURUM: TLabel;
    btn1: TButton;
    procedure FormShow(Sender: TObject);
    procedure btnMAIL_GONDERClick(Sender: TObject);

    procedure EPostaInitializeISO(var VHeaderEncoding: Char;
      var VCharSet: String);
    procedure btn1Click(Sender: TObject);


  private
    { Private declarations }
    procedure EPostaIcerikHazirla(Sender: TObject);
  public
    { Public declarations }
  end;

var
  E_MAIL_GONDER_PENCERE: TE_MAIL_GONDER_PENCERE;

implementation

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

procedure TE_MAIL_GONDER_PENCERE.EPostaIcerikHazirla(Sender: TObject);
begin
 // EPosta.CharSet := 'utf-8';
 // EPosta.Body.Text := string(UTF8Encode(mmoMAIL_TEXT.Lines.Text));
 // EPosta.ContentType := 'text/plain';

 // EPosta.ContentType := 'text/plain';
 //EPosta.CharSet := 'iso-8859-9';
 //EPosta.Body.Text := mmoMAIL_TEXT.LineS.Text;

EPosta.ContentType := 'text/plain';
EPosta.CharSet := 'iso-8859-9';
EPosta.Body.Text := mmoMAIL_TEXT.LineS.Text;
end;


procedure TE_MAIL_GONDER_PENCERE.FormShow(Sender: TObject);
var
    MAIL_AYARLARI :String;
begin
         MAIL_AYARLARI:='';
         QRY_MAIL_AYARLARI.Close;
         MAIL_AYARLARI:=MAIL_AYARLARI+'CALISILAN_FIRMA='+QuotedStr(KULLANICI_GIRIS.qryCALISILAN_FIRMA_DB.FieldByName('KIMLIK').Text)+' and ';
         if Length(MAIL_AYARLARI)>0 then
         MAIL_AYARLARI:='where '+LeftStr(MAIL_AYARLARI,Length(MAIL_AYARLARI)-5);
         QRY_MAIL_AYARLARI.SQL.Text:='SELECT top(1) * FROM MAIL_AYARLARI '+MAIL_AYARLARI;
         QRY_MAIL_AYARLARI.Open;  {
         edtE_MAIL_ADRESI_TEXT.Text:='';
         edtKONU.Text:='';
         mmoMAIL_TEXT.Text:=''; }
end;

procedure TE_MAIL_GONDER_PENCERE.btnMAIL_GONDERClick(Sender: TObject);
begin
  inherited;
  mmoDURUM.Lines.Add('');
  Application.ProcessMessages;
  mmoDURUM.Lines.Add('Bağlantı Kuruluyor.');
  try
    if SMTP.Connected then SMTP.Disconnect;
    SMTP.Host := QRY_MAIL_AYARLARI.Fieldbyname('GIDEN_SUNUCU').Text; //EditHOST.Text;
    //SMTP.AuthType := satNone;
    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.Port := 25;
      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
    begin
      SMTP.UseTLS := utNoTLSSupport;
      SMTP.IOHandler := nil;
      SMTP.ConnectTimeout := 3000;
    end else


    begin
      mmoDURUM.Lines.Add('Bağlantı 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;
    end;

     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.ConnectTimeout := 10000;


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

    mmoDURUM.Lines.Add('E-posta gönderiliyor.');

    EPosta.Clear;
    EPosta.From.Address := QRY_MAIL_AYARLARI.Fieldbyname('KULLANICI_ADI').Text;//EditUSER.Text;
    EPosta.From.Name := KULLANICI_GIRIS.qryCALISILAN_FIRMA_DB.fieldbyname('FIRMA_TAM_UNVANI').Text + ' (Sistem Mesajidir.)';
    EPosta.ReplyTo.EMailAddresses := 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 E-posta gönderilmiştir.');
   finally
    mmoDURUM.Lines.Add('Bağlantı sonlandırılıyor.');
    if SMTP.Connected then SMTP.Disconnect;
  end; 
end;

procedure TE_MAIL_GONDER_PENCERE.EPostaInitializeISO(var VHeaderEncoding: Char;
  var VCharSet: String);
begin
  inherited;
  VCHarSet :=  'iso-8859-9'; // 'iso-8859-9';
end;



procedure TE_MAIL_GONDER_PENCERE.btn1Click(Sender: TObject);
begin
      edtE_MAIL_ADRESI_TEXT.Text:='erdogan_ozkaya@hotmail.com';

end;

end.
Cevapla