Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mail Gönderiminde User Authentication Metodu
#11
(09-08-2020, Saat: 07:06)hayalyilmaz43 Adlı Kullanıcıdan Alıntı:
(09-08-2020, Saat: 01:02)samsaros@gmail.com Adlı Kullanıcıdan Alıntı: teşekkürler, yarın test exe siyle kurumda deneyeceğim.

umarım işinizi görür, bende merak ediyorum atabildinizmi Smile

eğer atamıyorsanız ve o sunucu ile aynı network içinde iseniz, yani sunucunun nete çıktığı ip adresi ile, sizin iç ağdaki bilgisayarınızdan nete çıktığınız ip adresi aynı ise, bunun anlamı, domain administrator mx için geçerli sender TXT ptr -> v=spf1 olarak kendi ip adresini (yani sizin dış ip adresinizi) eklemiş demekdir, bunu mxtool dan domaini girerek kontrol edin, haliyle doğrudan siz maili atmak istediğiniz uzak adrese (sunucu ile sizin diş ip adresinizin aynı olması gerekir) örneğin gmail. mx server adresini alıp, yine indy smtp componenti ile secure bağlantı açıp, maili uzak mail sunucusunda bırakabilirsiniz, size deny verilmez spf kuralından ötürü. sender adresinide canınız ne istiyorsa verebilirsiniz, spoof edebilirsiniz.

Bilgi Güvenliği birimi   imap ile gönderim yapabilrsiniz demişler. adamlar farklı yöntemlerle deneme yaptıkca farklı bişeyler söylüyorlar.  
IMAP ile gönderim yaparken neye dikkat etmek gerekir acaba. pop ve smpt ile gönderim gibimidir.   sizin yukarıdaki bahsettiğiniz durumuda tam anlayamadım açıkçası. daha önce sizin bahsettiğiniz pop ile deneme yaptık, zaten smtp ile direk engelliydi. ikiside olmadı.
Cevapla
#12
(11-08-2020, Saat: 19:39)samsaros@gmail.com Adlı Kullanıcıdan Alıntı:
(09-08-2020, Saat: 07:06)hayalyilmaz43 Adlı Kullanıcıdan Alıntı: umarım işinizi görür, bende merak ediyorum atabildinizmi Smile

eğer atamıyorsanız ve o sunucu ile aynı network içinde iseniz, yani sunucunun nete çıktığı ip adresi ile, sizin iç ağdaki bilgisayarınızdan nete çıktığınız ip adresi aynı ise, bunun anlamı, domain administrator mx için geçerli sender TXT ptr -> v=spf1 olarak kendi ip adresini (yani sizin dış ip adresinizi) eklemiş demekdir, bunu mxtool dan domaini girerek kontrol edin, haliyle doğrudan siz maili atmak istediğiniz uzak adrese (sunucu ile sizin diş ip adresinizin aynı olması gerekir) örneğin gmail. mx server adresini alıp, yine indy smtp componenti ile secure bağlantı açıp, maili uzak mail sunucusunda bırakabilirsiniz, size deny verilmez spf kuralından ötürü. sender adresinide canınız ne istiyorsa verebilirsiniz, spoof edebilirsiniz.

Bilgi Güvenliği birimi   imap ile gönderim yapabilrsiniz demişler. adamlar farklı yöntemlerle deneme yaptıkca farklı bişeyler söylüyorlar.  
IMAP ile gönderim yaparken neye dikkat etmek gerekir acaba. pop ve smpt ile gönderim gibimidir.   sizin yukarıdaki bahsettiğiniz durumuda tam anlayamadım açıkçası. daha önce sizin bahsettiğiniz pop ile deneme yaptık, zaten smtp ile direk engelliydi. ikiside olmadı.

IdIMAP4 ü araştırın öyleyse

denemelerinizde componentler ne hata döndürdü, belki siz gitmiyor diyerek birşeyi kaçırıp yarı yoldan döndünüz Smile
Cevapla
#13
(06-08-2020, Saat: 14:49)samsaros@gmail.com Adlı Kullanıcıdan Alıntı: Normal olarak mail gonderme işlemini aşağıdaki gibi  yapabiliyorduk. ilk ssl de olmadan sorunsuz gonderim yapılabiiliyordu. Ama kurumda güvenlik ile ilgili bir değişiklik yapıldığından mailler gönderilememeye başlandı. ilk zamanlar zaman aşımı hatası veriyordu. İlgili birim User authentication  metoduyla gönderim yapmamız gerektiğini söylüyor. Ama User authentication metodu neyi ifade ediyor anlayamadım. bir çok deneme yaptım ama sorunu geçemedim bir türlü. ssl devreye aldık, AuthType  tipini değiştirdim ama sorun düzelmedi. en son aşağıdaki gibi bir hata alıyoruz. 


Konu hakkında fikri olan var mı acaba?
1?ui=2&ik=306d30dd03&attid=0.1&permmsgid...k&disp=emb
function SMTPbaglan:Boolean;
  begin
      SMTP.AuthType := satDEFAULT;
      SMTP.Host     := 'smtp.test.com' ;
      SMTP.Port     := 587';
      SMTP.Username := 'UserName';
      SMTP.Password := '1234';
      MailMessage.From.Address := 'test@test.com'
      MailMessage.From.Name:='test' ;

      if SSLAktif then
       begin
        SSLIOHandler.DefaultPort := 0;
        SSLIOHandler.SSLOptions.Method := sslvTLSv1;
        SSLIOHandler.SSLOptions.Mode := sslmUnassigned;
        SSLIOHandler.SSLOptions.VerifyMode := [];
        SMTP.IOHandler := SSLIOHandler;
        SMTP.ConnectTimeout := 10000;
       end
      else
        SMTP.IOHandler := nil;

      if SMTP.Host ='' then
      begin
        Result := False;
          ShowMsg('Mail Ayarlarınızı Yapınız');
      end
      else
        Result := True;
      if not SMTP.Connected then SMTP.Connect;
  end;


.....

     try     
        SMTP.Send(FSDM.MailMessage);        
       Except On E:Exception do
         ShowMsg('Mail Gönderilemedi. Nedeni:'+E.Message);
       end;

@samsaros@gmail.com,
Lütfen form kurallarına uyalım... UYARIDIR!
Delphi Can'dır!
WWW
Cevapla
#14
Selamlar
Aynı sorun benim için de geçerli. Bugün birkaç deneme yaptım ama, mail gönderme işlemi başladığında " Authentication required " hatası alıyorum. Hala da çözüm için uğraşıyorum. Benim kodlarım aşağıdaki gibidir. Sorunu çözen arkadaşlarımız olur da paylaşırsa çok sevinirim.

procedure TForm1.Button1Click(Sender: TObject);
var
 idSMTP1: TIdSMTP;
begin
 idSMTP1 := TIdSMTP.Create(nil);
 try
   with IdMessage do
 begin
   Body.Clear;
   Body.Add('Dikkat : Programı Kontrol Ediniz!');
   From.Text := 'harun@firmaadi.com'; // gönderen kim ?
   Recipients.EMailAddresses := 'harun@hotmail.com'; //kime gidecek, alıcı ?
   Subject := 'Dikkat : Programı Kontrol Ediniz!'; //;
   CCList.EMailAddresses := 'harun@gmail.com'; // {CC çoklu alıcı carboncopy
 end;
   idSMTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(idSMTP1);
   idSMTP1.UseTLS := utUseExplicitTLS;
   TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvTLSv1;

   idSMTP1.Host := 'smtp.office365.com';
   idSMTP1.Port := 587;

   idSMTP1.AuthType := satDefault;
   idSMTP1.Username := 'harun@firmaadi.com';
   idSMTP1.Password := 'sifre';
   try
     idSMTP1.Connect;
     try
       idSMTP1.Authenticate;
       idSMTP1.Send(IdMessage);
     finally
       idSMTP1.Disconnect;
     end;
     ShowMessage('OK');
   except
     on E: Exception do
     begin
       ShowMessage(Format('Failed!'#13'[%s] %s', [E.ClassName, E.Message]));
       raise;
     end;
   end;
 finally
   idSMTP1.Free;
 end;
 end;
Cevapla
#15
Selamlar
Arkadaşlar, yukarıda yazmış olduğum kod çalışmaktadır. Mail gönderim hatasının , firmanın tarafıma sağlamış olduğu internet bağlantısından (muhtemelen firewall kurallarından) olduğunu tesbit ettim. Bilgisayarımı cep telefonumun internetine bağladığımda, hatasız olarak mail gönderdim. Kodu kendinize göre adapte edip kullanabilirsiniz.
Cevapla
#16
Merhaba,

Şöyle bir şey de arşivde bulunsun. Faydası olacaktır.


{$REGION ' EPostaGonder '}

var
       Namee, Adress, Hostt, Portt, Userss, Passs, UseTlss, AuthTypee:String;


Function EPostaGonder(AliciEpostalar, IslemTipi, EPostaBody:String):Boolean;
var
       a, Kural    :Byte;
       Bekle, Satir:Integer;
       s           : String;

       Smtp      : TIdSMTP;
       EPosta    : TIdMessage;
       SSL       : TIdSSLIOHandlerSocketOpenSSL;

begin

       
       {$REGION ' Gönderim '}

             Smtp        :=  TIdSmtp.Create(nil);
             EPosta      :=  TIdMessage.Create(nil);
             SSL  :=  TIdSSLIOHandlerSocketOpenSSL.Create(nil);

             try
                       EPosta.Clear;       //İletinin üstbilgisini ve gövdesini temizler.
                       EPosta.ClearBody;   //İleti gövdesinin içeriğini temizler
                       EPosta.ClearHeader; //İleti başlığının içeriğini temizler

                       EPosta.ReceiptRecipient.Text     :=  ''; //Teslim bilgisi
                       EPosta.ReplyTo.EmailAddresses    :=  ''; //Mesaj yanıtları için teslimat adresini tanımlar.
                       EPosta.Priority                  :=  mpNormal;
                       EPosta.From.Name                 :=  Namee;
                       EPosta.From.Address              :=  Adress;//gönderen Adres
                       //EPosta.CCList.Add.Address        :=  Adress;//Başka kime bilgi verilsin
                       EPosta.BCCList.Add.Address       :=  Adress;//Başka kime GİZLİ bilgi verilsin
                       EPosta.Recipients.EMailAddresses :=  AliciEpostalar;
                       EPosta.CharSet                   :=  'UTF-8';//'ISO-8859-9';
                       EPosta.ContentType               :=  'text/html; charset=ISO-8859-9';//Buradaki charset esaas Türkçe karakterleri düzeltiyor..
                       EPosta.ContentTransferEncoding   :=  '8bit';
                       EPosta.Encoding                  :=  meMIME;
                       EPosta.Subject                   :=  UTF8Encode(KonBas);
                       EPosta.Body.Text                 :=  EPostaBody;

                       try
                               Smtp.Host     := Hostt;
                               Smtp.Port     := StrToInt(Portt);

                               If AuthTypee='satDefault'  Then Smtp.AuthType := satDefault else
                               If AuthTypee='satNone'     Then Smtp.AuthType := satNone else
                               If AuthTypee='satSASL'     Then Smtp.AuthType := satSASL else
                               Smtp.AuthType := satDefault;

                               Smtp.Username := Userss;
                               Smtp.Password := Passs;


                               {$REGION ' SSL '}
                               if UseTlss='' then
                               begin
                                       Smtp.UseTLS         := utNoTLSSupport;
                                       Smtp.IOHandler      := nil;
                                       Smtp.ConnectTimeout := 3000;
                               end
                               else
                               begin
                                       SSL.Destination             :=  Smtp.Host + ':' + IntToStr(Smtp.Port);
                                       SSL.Host                    :=  Smtp.Host;
                                       SSL.Port                    :=  Smtp.Port;
                                       SSL.DefaultPort             :=  0;
                                       //SSL.MaxLineAction           :=  maException;
                                       //SSL.SSLOptions.SSLVersions  :=  [sslvTLSv1_2]; //bağlanılacak sunucunun kullanması muhtemel versiyonlar
                                       SSL.SSLOptions.Method       :=  sslvTLSv1;//sslvSSLv3;//sslvTLSv1_2; //sslvSSLv23;
                                       SSL.SSLOptions.Mode         :=  sslmUnassigned; //sslmClient;// sslmUnassigned;  // sslmBoth; //sslmServer; //sslmUnassigned; // sslmClient;
                                       SSL.SSLOptions.VerifyMode   :=  [];
                                       SSL.SSLOptions.VerifyDepth  :=  0;
                                       Smtp.IOHandler                     :=  SSL;
                                       //Smtp.ValidateAuthLoginCapability:=True;
                                       //Smtp.UseEhlo:=True;

                                       if UseTlss='SSL' then
                                       Smtp.UseTLS := utUseImplicitTLS //Sunucu varsayılan şifreleme kullanıyorsa bunu kullanın.
                                       else
                                       if UseTlss='TLS' then
                                       Smtp.UseTLS := utUseExplicitTLS //Eğer varsa şifreleme kullanmak isterseniz bunu kullanın.
                                       else
                                       if UseTlss='Otomatik' then
                                       Smtp.UseTLS := utUseRequireTLS; //Bu aslında sunucu bağlantıları şifresiz desteklemiyorsa, bağlantı girişimi başarısız olur dışında utUseExplicitTLS aynıdır.

                                       Smtp.ConnectTimeout := 10000;
                               end;
                               {$ENDREGION}


                               {$REGION ' Smtp.Connect; '}
                               try
                                       Smtp.Connect;
                               except
                                       On E:Exception Do
                                       begin
                                               ShowMessage('Smtp sunucusuna bağlantı hatası : '+E.Message);
                                               Exit;
                                       end;
                               end;


                               {$ENDREGION}

                               {$REGION ' Smtp.Authenticate; '}


                               if UseTlss<>'' then
                               begin
                                       try
                                               Smtp.Authenticate;
                                       except
                                               On E:Exception Do
                                               begin
                                                       ShowMessage('Güvenlik anahtarı hatası : '+E.Message);
                                                       Exit;
                                               end;
                                       end;
                               end;


                               {$ENDREGION}

                               {$REGION ' Smtp.Send(EPosta); '}

                               try
                                       Smtp.Send(EPosta);

                                       Result:=True;
                               except
                                       On E:Exception Do
                                       ShowMessage('Hata            : '+E.Message);
                               end;
                               {$ENDREGION}

                       finally
                       end;
             finally
                       Smtp.Free;
                       EPosta.Free;
                       SSL.Free;
             end;
       {$ENDREGION}
end;

{$ENDREGION}
Cevapla
#17
Ben çözüm olarak, mail leri db ye basıp,  firewall dan kısıtlama yapılmayan izin verilen sunucudan mailleri timer ile göndermek oldu.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  sms gönderiminde türkçe karakter sorunu erdogan 2 750 18-03-2020, Saat: 16:27
Son Yorum: erdogan
  HHBMailComponent - Kolay Mail Gönderim Bileşeni [Delphi] Halil Han BADEM 38 13.429 23-01-2020, Saat: 09:18
Son Yorum: SimaWB
Information rest debugger ile authentication hatası[ÇÖZÜLDÜ]] yokbi 2 1.046 25-12-2019, Saat: 17:02
Son Yorum: yokbi
  Soap Serverd uygulamasında http ile mail yhackup 4 1.774 18-02-2019, Saat: 08:40
Son Yorum: yhackup
  [ÇÖZÜLDÜ] Google Calendar API Server tipi Erişim Metodu hakkında tecrübesi olan mrmarman 41 12.983 01-02-2019, Saat: 09:30
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi