Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
E-mail gönderimde türkçe karakter sorunu
#1
Arkadaşlar,

Aşağıdaki kod ile mail gönderebiliyorum fakat Türkçe karakter sorununu bir türlü çözmedim yardımcı olabilecek bir arkadaş varsa minnettar olacağım teşekkürler.

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.Body.Text := 'ERDOĞAN ÖZKAYA '+mmoMAIL_TEXT.LineS.Text;
  //EPosta.ContentType := 'text/html';
 // EPosta.CharSet := 'text/html';

 EPosta.CharSet := 'text/html';

 EPosta.Body.Text := '<html><body><b>'+mmoMAIL_TEXT.LineS.Text+'</b><a href="htmlbodyIMG0000.JPG" ></body></html>';

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('19')+' 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 :=   'ARF GÜVENLİK AŞ (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
#2
Tüm dosyayı burada paylaşmak yerine sadece ilgili kısmı paylaşsanız, cevap vermek isteyenler için daha iyi olur.
There's no place like 127.0.0.1
WWW
Cevapla
#3
Ben bu şekilde sıkıntı yaşamadım bir bakın isterseniz
http://www.delphican.com/delphi-ile-gmai...erimi.html
WWW
Cevapla
#4
Merhaba,
@yhackup Bey'in Türkçe karakterleri destekleyen çözüm yöntemi doğrudur.

Farklı bir yöntemle mail Hader ve Content değerlerini ayrı ayrı düzenleyerek sorunu çözebilirsiniz;

Mail Header kısmı için;
procedure TForm1.IdMessage1InitializeISO(var VHeaderEncoding: Char; var VCharSet: string);
begin
 VCharSet := 'iso-8859-9';
end;
 

Mail Content kısmı için;
procedure TForm1.FormCreate(Sender: TObject);
begin
 idMessage1.ContentType := 'text/plain; charset=ISO-8859-9';
end;
Cevapla
#5
Daha önce code.google.com'dan GitHub'a import ettiğim goo-api içerisinde TGMailSMTP bileşeni mevcut. 
Projelerinde GMail'i kullanmak isteyenlerin ilgisini çekebilir. 
Ayrıca Google Contacts, Calendar vs. için de bileşenler var. (Uzun zaman önce yazıldığı için bazı sıkıntılar olabilir)
There's no place like 127.0.0.1
WWW
Cevapla
#6
bir çok yerde kullandım bunu ya bir şekilde bunu çözmem lazım Sad

haala bir sonuca ulaşamadım web de türkçe çıkıyor ama outlook da karakter bozuk çıkıyor.
Cevapla
#7
konu güncel..
Cevapla
#8
@erdogan bey hep aynı şeyi yapıyorsunuz armut piş ağzıma düş, yukarıda komple çalışan kodu verdim isterseniz verin projeyi de ben yazayım.
WWW
Cevapla
#9
Smile armut pişmesin tabi...
bir çok yöntem denedim bazı yöntemlerde Türkçe karakteri çözdüm fakat sadece web de açarsam Türkçe karakter oluyor outlook ta Türkçe çıkmıyor .

başka bir yöntem var ise onuda deneyebilirim.

Teşekkürler
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Gmail Mail Gönderirken Connection Gracefuly Hatası COMMANDX 0 213 02-02-2024, Saat: 15:21
Son Yorum: COMMANDX
  türkçe karakter problemi delphiX14 4 460 27-12-2023, Saat: 10:03
Son Yorum: delphiX14
  Acayip bir karakter gösterim durumu delphicim 3 470 10-11-2023, Saat: 12:24
Son Yorum: delphicim
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 4.418 08-11-2023, Saat: 00:06
Son Yorum: berkan
  TCMB Kur Almada Explorer Sertifika Sorunu Adem Kurt 3 622 24-10-2023, Saat: 15:14
Son Yorum: RAD Coder



Konuyu Okuyanlar: 1 Ziyaretçi