Yorumları: 15
Konuları: 4
Kayıt Tarihi: 22-05-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 18 Başlangıç
(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
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ı.
Yorumları: 174
Konuları: 21
Kayıt Tarihi: 19-06-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 534 Acemi
12-08-2020, Saat: 05:27
(Son Düzenleme: 12-08-2020, Saat: 05:27, Düzenleyen: hayalyilmaz43.)
(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
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
Yorumları: 262
Konuları: 26
Kayıt Tarihi: 29-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 317 Acemi
(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?
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!
Yorumları: 669
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544 Programcı
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;
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 669
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544 Programcı
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.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 67
Konuları: 21
Kayıt Tarihi: 02-04-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 423 Acemi
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}
Yorumları: 15
Konuları: 4
Kayıt Tarihi: 22-05-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 18 Başlangıç
19-10-2020, Saat: 17:22
(Son Düzenleme: 19-10-2020, Saat: 17:23, Düzenleyen: samsaros@gmail.com.)
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.
|