32 Bit işletim sistemi kullanıyorsan bu kütüphaneleri dene. D2007'de çalışıyor. D7'de de çalışacağını değerlendiriyorum.
Bu dll'leri uzağa değil, direkt projeni derlediğin EXE dosyanın olduğu klasöre kopyala. Doğru kütüphaneleri çalıştırdığına emin olduktan sonra sisteminde dilediğin yere taşır oraya bakılmasını sağlarsın.
Fonksiyon:
Kod: Tümünü seç
USES IdMessage, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP,
IdPOP3;
function ePostaYollaGMAIL( strAlici, strKonu, strMesaj, strUserName, strPass : String ): Boolean;
Var
IdSMTP : TIdSMTP;
IOHandler : TIdSSLIOHandlerSocketOpenSSL;
IdMessage : TIdMessage;
begin
IdSMTP := TIdSMTP.Create(nil);
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdSMTP.Host :='smtp.gmail.com';
IdSMTP.Port := 587;
IdSMTP.Username := strUserName;
IdSMTP.Password := strPass;
IdSMTP.IOHandler := IOHandler;
IdSMTP.UseTLS := utUseExplicitTLS;
IdMessage := TIdMessage.Create(nil);
IdMessage.From.Address := strUserName;
IdMessage.Recipients.EMailAddresses := strAlici;
IdMessage.Subject := strKonu;
IdMessage.Body.Text := strMesaj;
IOHandler.Host := IdSMTP.Host;
IOHandler.Port := 587;
IOHandler.Destination := IdSMTP.Host + ':' + IntToStr(IdSMTP.Port);;
IOHandler.SSLOptions.Method := sslvTLSv1;
IOHandler.SSLOptions.Mode := sslmUnassigned;
IOHandler.SSLOptions.VerifyMode := [];
IOHandler.SSLOptions.VerifyDepth := 0;
try
try
if not IdSMTP.Connected then IdSMTP.Connect() ;
IdSMTP.Send(IdMessage); //burada programı kesiyor, Exception class EIdSocketError with message 'Socket Error # 10060 Connection timed out.'. hatası veriyor bu nasıl düzelir delphi XE...[/COLOR]
Result := True;
except on E:Exception do
Result := False;
end;
finally
if IdSMTP.Connected then IdSMTP.Disconnect;
IdMessage.Free;
IOHandler.Free;
IdSMTP.Free;
end;
end;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
strAlici, strKonu, strMesaj, strUser, strPass : String;
begin
strAlici := Edit3.Text;
strKonu := Edit4.Text;
strMesaj := Memo1.Lines.Text;
strUser := Edit1.Text;
strPass := Edit2.Text;
if ePostaYollaGMAIL( strAlici, strKonu, strMesaj, strUser, strPass )
then MessageDlg('Mesaj başarıyla gönderildi...', mtInformation, [mbOk], 0)
else MessageDlg('Mesaj gönderme işleminde sorun çıktı...', mtError, [mbOk], 0);
end;