TIdMEssage Türkçe karakter problemi hakkında (Çözüldü)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

TIdMEssage Türkçe karakter problemi hakkında (Çözüldü)

Mesaj gönderen adelphiforumz »

Selamlar

Indy içerisinde bulunan TIdMessage componentini kullanıyorum.
Giden mesajın body kısmında kullandığım türkçe karakterlerde hiç bir sorun yok.
Fakat subject kısmına yazdığım türkçe karakterlerde bozulma oluyor.
Bunun çözümünü bilen arkadaşların yardımını rica ederim.

Teşekkürler.
En son adelphiforumz tarafından 13 Nis 2011 04:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TIdMEssage Türkçe karakter problemi hakkında

Mesaj gönderen SimaWB »

OnInitializeISO event'i içinde

Kod: Tümünü seç

VCharSet := 'ISO-8859-9';
yaz
There's no place like 127.0.0.1
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: TIdMEssage Türkçe karakter problemi hakkında

Mesaj gönderen adelphiforumz »

Teşekkür ederim
Sorun verdiğiniz örnekle çözüldü

Ek Not: Event içerisinde bulunan TTransfer veri elemanı için USES kismina
IdCoderHeader eklenmesi gerekiyor.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
cmkare
Üye
Mesajlar: 177
Kayıt: 23 Ağu 2010 11:29

Re: TIdMEssage Türkçe karakter problemi hakkında (Çözüldü)

Mesaj gönderen cmkare »

MErhaba.. birşey soracağım. mail gönderdiğinizde, gönderdiğiniz kişinin önemsiz mail kutusuna düşme gibi bir sorun oluyormu?
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: TIdMEssage Türkçe karakter problemi hakkında (Çözüldü)

Mesaj gönderen adelphiforumz »

A.S.

bende hiç öyle sorun olmadı
gönderdiğim mail karşı tarafın direk inbox kutusuna düşüyor

kesin olmamakla birlikte belki mail aldığınız yer yada firewall lar bunları junk olarak yorumluyor olabilir
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
_huseyinciftci
Üye
Mesajlar: 1
Kayıt: 10 Kas 2017 01:01

Re: TIdMEssage Türkçe karakter problemi hakkında (Çözüldü)

Mesaj gönderen _huseyinciftci »

ben de aynı sorunu yaşıyorum. gönderdiğim mail içindeki ı harfleri i ye dönüşüyor mesela. nasıl çözdünüz yardımcı olur musunuz?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: TIdMEssage Türkçe karakter problemi hakkında (Çözüldü)

Mesaj gönderen sabanakman »

"IndySecureMailClient.pas" dosyasında tanımlı "TSSLEmail" sınıfı ile aşağıdaki gibi ePosta göndermede pek sıkıntı çıkmadı karşıma

Kod: Tümünü seç

  eMail := TSSLEmail.Create(leSMTPServer.Text, StrToInt(leSMTPPort.Text), leSMTPAdres.Text, leSMTPSifre.Text);
  try
    eMail.edSenderName := leBaslik.Text;
    eMail.edSenderEmail := leSMTPAdres.Text;
    eMail.edToEmail := ''; //sKime;
    eMail.edBCCEmail := sKime;
    eMail.edSubject := eKonu.Text;
    eMail.edBody.Text := mMesaj_Lines;
    try
      //Sleep(1250);
      eMail.SendEmail(nil);
    except
      on E:Exception do begin
        Result.HataSinifi:=E.ClassType;//ExceptClass(E.ClassType);
        Result.HataMesaji:=E.Message;
        Result.Calisti:=False;
      end;
    end;
  finally
    eMail.Free;
  end;
.

IndySecureMailClient.pas dosyası...

Kod: Tümünü seç

unit IndySecureMailClient;

interface

uses
  IdMessage, Classes, IdSMTP, IdAttachmentFile, IdAttachmentMemory, IdGlobalProtocols;

const
  SMTP_PORT_EXPLICIT_TLS = 587;

type
  TSSLEmail = class(TObject)
  private
    IdMessage: TIdMessage;
    SMTP: TIdSMTP;

    FedBody: TStrings;
    FedSMTPPort: Integer;
    FedToEmail: string;
    FedSubject: string;
    FedSMTPServer: string;
    FedCCEmail: string;
    FedPassword: string;
    FedBCCEmail: string;
    FedSenderName: string;
    FedUserName: string;
    FedPriority: TIdMessagePriority;
    FedSenderEmail: string;
    FedSSLConnection: Boolean;

    // Getter / Setter
    procedure SetBody(const Value: TStrings);

    procedure Init;
    procedure InitMailMessage;
    procedure InitSASL;
    procedure AddSSLHandler;

  public
    constructor Create; overload;
    constructor Create(const ASMTPServer: string;
      const ASMTPPort: Integer;
      const AUserName, APassword: string); overload;

    destructor Destroy; override;

    procedure SendEmail(const strm:TStream);

    // Properties
    property edBCCEmail: string read FedBCCEmail write FedBCCEmail;
    property edBody: TStrings read FedBody write SetBody;
    property edCCEmail: string read FedCCEmail write FedCCEmail;
    property edPassword: string read FedPassword write FedPassword;
    property edPriority: TIdMessagePriority read FedPriority write FedPriority;
    property edSenderEmail: string read FedSenderEmail write FedSenderEmail;
    property edSenderName: string read FedSenderName write FedSenderName;
    property edSMTPServer: string read FedSMTPServer write FedSMTPServer;
    property edSMTPPort: Integer read FedSMTPPort write FedSMTPPort;
    property edSSLConnection: Boolean read FedSSLConnection write FedSSLConnection;
    property edToEmail: string read FedToEmail write FedToEmail;
    property edUserName: string read FedUserName write FedUserName;
    property edSubject: string read FedSubject write FedSubject;

  end;

implementation

uses
  IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  IdMessageClient, IdSMTPBase, IdBaseComponent, IdIOHandler,
  IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdSASLLogin,
  IdSASL_CRAM_SHA1, IdSASL, IdSASLUserPass, IdSASL_CRAMBase, IdSASL_CRAM_MD5,
  IdSASLSKey, IdSASLPlain, IdSASLOTP, IdSASLExternal, IdSASLDigest,
  IdSASLAnonymous, IdUserPassProvider;

constructor TSSLEmail.Create;
begin
  inherited;

  Init;

  FedBody := TStringList.Create;
end;

procedure TSSLEmail.Init;
begin
  edSSLConnection := True;
  edPriority := TIdMessagePriority.mpNormal;
end;

constructor TSSLEmail.Create(const ASMTPServer: string;
  const ASMTPPort: Integer; const AUserName, APassword: string);
begin
  Create;

  edSMTPServer := ASMTPServer;
  edSMTPPort := ASMTPPort;
  edUserName := AUserName;
  edPassword := APassword;
end;

destructor TSSLEmail.Destroy;
begin
  edBody.Free;

  inherited;
end;

// Setter / Getter -----------------------------------------------------------

procedure TSSLEmail.SetBody(const Value: TStrings);
begin
  FedBody.Assign(Value);
end;

// Send the mail -------------------------------------------------------------

procedure TSSLEmail.SendEmail(const strm:TStream);
var imgPart:TIdAttachmentMemory;
begin
  IdMessage := TIdMessage.Create;
  try
    InitMailMessage;

    //TIdAttachmentFile.

    if Assigned(strm) and (strm.Size>0) then begin
      strm.Position:=0;
      {imgPart:=TIdAttachmentMemory.Create(IdMessage.MessageParts, strm);
      imgpart.ContentType := GetMIMETypeFromFile('imza.jpg');
      imgpart.ContentID := '<imza>';
      imgpart.ContentDisposition := 'inline';{}

      //TIdAttachmentFile.Create(IdMessage.MessageParts, 'C:\Users\saban\AppData\Local\Microsoft\Windows\INetCache\Low\IE\HYYTCDA0\esra-erolda-damat-adayinin-mikrofonu-frlatip-gitmesi_8815718-4920_140x79[1].jpg');
    end;


    SMTP := TIdSMTP.Create;
    try
      if edSSLConnection then
      begin
        AddSSLHandler;

        if edSMTPPort = SMTP_PORT_EXPLICIT_TLS then
          SMTP.UseTLS := utUseExplicitTLS
        else
          SMTP.UseTLS := utUseImplicitTLS;
      end;

      if (edUserName<>'') or (edPassword<>'') then
      begin
        SMTP.AuthType := satSASL;
        InitSASL;
      end
      else
      begin
        SMTP.AuthType := satNone;
      end;

      SMTP.Host := edSMTPServer;
      SMTP.Port := edSMTPPort;
      SMTP.ConnectTimeout := 30000;
      SMTP.UseEHLO := True;
      SMTP.Connect;

      try
        SMTP.Send(IdMessage);
      finally
        SMTP.Disconnect;
      end;
    finally
      SMTP.Free;
    end;
  finally
    IdMessage.Free;
  end;
end;

// Prepare the mail ----------------------------------------------------------

procedure TSSLEmail.InitMailMessage;
begin
  IdMessage.ContentType := 'text/plain';
  IdMessage.Charset := 'UTF-8';
  IdMessage.Body := edBody;
  IdMessage.Sender.Text := edSenderEMail;
  IdMessage.From.Name := edSenderName;
  IdMessage.From.Address := edSenderEMail;
  IdMessage.ReplyTo.EMailAddresses := edSenderEmail;
  IdMessage.Recipients.EMailAddresses := edToEmail;
  IdMessage.Subject := edSubject;
  IdMessage.Priority := edPriority;
  IdMessage.CCList.EMailAddresses := edCCEMail;
  IdMessage.ReceiptRecipient.Text := '';
  IdMessage.BccList.EMailAddresses := edBCCEMail;
end;

procedure TSSLEmail.AddSSLHandler;
var
  SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(SMTP);
  // SSL/TLS handshake determines the highest available SSL/TLS version dynamically
  SSLHandler.SSLOptions.Method := sslvSSLv23;
  SSLHandler.SSLOptions.Mode := sslmClient;
  SSLHandler.SSLOptions.VerifyMode := [];
  SSLHandler.SSLOptions.VerifyDepth := 0;
  SMTP.IOHandler := SSLHandler;
end;

procedure TSSLEmail.InitSASL;
var
  IdUserPassProvider: TIdUserPassProvider;
  IdSASLCRAMMD5: TIdSASLCRAMMD5;
  IdSASLCRAMSHA1: TIdSASLCRAMSHA1;
  IdSASLPlain: TIdSASLPlain;
  IdSASLLogin: TIdSASLLogin;
  IdSASLSKey: TIdSASLSKey;
  IdSASLOTP: TIdSASLOTP;
  IdSASLAnonymous: TIdSASLAnonymous;
  IdSASLExternal: TIdSASLExternal;
begin
  IdUserPassProvider := TIdUserPassProvider.Create(SMTP);
  IdUserPassProvider.Username := edUserName;
  IdUserPassProvider.Password:= edPassword;

  IdSASLCRAMSHA1 := TIdSASLCRAMSHA1.Create(SMTP);
  IdSASLCRAMSHA1.UserPassProvider := IdUserPassProvider;
  IdSASLCRAMMD5 := TIdSASLCRAMMD5.Create(SMTP);
  IdSASLCRAMMD5.UserPassProvider := IdUserPassProvider;
  IdSASLSKey := TIdSASLSKey.Create(SMTP);
  IdSASLSKey.UserPassProvider := IdUserPassProvider;
  IdSASLOTP := TIdSASLOTP.Create(SMTP);
  IdSASLOTP.UserPassProvider := IdUserPassProvider;
  IdSASLAnonymous := TIdSASLAnonymous.Create(SMTP);
  IdSASLExternal := TIdSASLExternal.Create(SMTP);
  IdSASLLogin := TIdSASLLogin.Create(SMTP);
  IdSASLLogin.UserPassProvider := IdUserPassProvider;
  IdSASLPlain := TIdSASLPlain.Create(SMTP);
  IdSASLPlain.UserPassProvider := IdUserPassProvider;

  SMTP.SASLMechanisms.Add.SASL := IdSASLCRAMSHA1;
  SMTP.SASLMechanisms.Add.SASL := IdSASLCRAMMD5;
  SMTP.SASLMechanisms.Add.SASL := IdSASLSKey;
  SMTP.SASLMechanisms.Add.SASL := IdSASLOTP;
  SMTP.SASLMechanisms.Add.SASL := IdSASLAnonymous;
  SMTP.SASLMechanisms.Add.SASL := IdSASLExternal;
  SMTP.SASLMechanisms.Add.SASL := IdSASLLogin;
  SMTP.SASLMechanisms.Add.SASL := IdSASLPlain;
end;

end.
Not: ePosta mesajına resim veya dosya iliştirme çalışmasına başlamış ama devam edememiştim yoğunluktan. Bu hali sadece metin bilgisi olarak mesaj göndermektedir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla