Konuyu Paylaş : facebook gplus twitter

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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
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;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Daha önce code.google.com'dan GitHub'a import ettiğim Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol içerisinde Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol 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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#7
konu güncel..
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
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
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Lisanslama Sorunu Hk. glagher 11 490 07-07-2018, Saat: 10:40
Son Yorum: engerex
  Aes şifreleme sorunu seci20 3 182 18-06-2018, Saat: 11:45
Son Yorum: sadettinpolat
  RSA anahtarı hesaplama sorunu seci20 8 333 14-06-2018, Saat: 15:19
Son Yorum: seci20
  DbBrowser-Veritabanı kilitlenme sorunu ? BY-HAYALET 2 127 08-06-2018, Saat: 21:13
Son Yorum: BY-HAYALET
  HHBMailComponent - Kolay Mail Gönderim Bileşeni [Delphi] hyperxman 22 878 07-05-2018, Saat: 19:44
Son Yorum: hyperxman



Konuyu Okuyanlar: 1 Ziyaretçi