Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

SMTP Socketverbindungen...

Diskussion: SMTP Socketverbindungen... im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo... ich habe mich mal an einer SMTP klasse versucht um eine mail via smtp zu verschicken. Ich habe ...

Antwort
Alt 12.06.07, 12:34   #1 (permalink)
 
Registriert seit: 04.10.05
bLaCk-DrAg0n Leistung: Facit NTK
bLaCk-DrAg0n eine Nachricht über ICQ schicken
Likes: 0
Standard SMTP Socketverbindungen...

Anzeige

Hallo...
ich habe mich mal an einer SMTP klasse versucht um eine mail via smtp zu verschicken.

Ich habe jedoch das problem das das script nach 60 secs aufhört... (Maximum execution time of 60 seconds exceeded).

PHP-Code:
class messenger extends database
{
    
    
/**
     *  SMTP server port
     *  @var int
     */
    
var $_PORT 25;
    
    
/**
     *  SMTP default server domain
     *  @var string
     */
    
var $_domain "smtp.domain.de";
    
    
/**
     *  SMTP default connection interval
     *  @var int
     */
    
var $_tval 10;
    
    
/**
    * SMTP username
    * @var string
    */
    
var $_username "unsername";
    
    
/**
    * SMTP password
    * @var string
    */
    
var $_password "password";
    
    
/**
     *  SMTP reply line ending
     *  @var string
     */
    
var $CRLF "\r\n";
    
    
/**#@+
     * @access private
     */
    
private $socket;      # the socket to the server
    
private $backtrace "";    
    
/**#@-*/
    
    
public function init()
    {
        
$this->connect();
        
        return 
true;
    }
    
    function 
connect()
    {
        
$this->socket fsockopen(    $this->_domain,    # the host of the server
                                      
$this->_PORT,    # the port to use
                                    
$errno,           # error number if any
                                    
$errstr,          # error message if any
                                    
$this->_tval);     # give up after ? secs
        
        
if(empty($this->socket)) 
        {
            
$this->add_backtrace(array("# Failed to connect to server.""# " $errstr " (" $errno ")"));
            return 
false;
        }
        
        
$this->add_backtrace("# Connected to " $this->_domain $this->CRLF);
        
# sometimes the SMTP server takes a little longer to respond
        # so we will give it a longer timeout for the first read
        // Windows still does not have support for this timeout function
        
if(substr(PHP_OS03) != "WIN"
        
socket_set_timeout($this->socket$this->_tval0);
        
        
        
// das is halt nur zum testen ^^
        
$this->server_send("HELO " $this->_domain);
        
$this->server_send("AUTH LOGIN");
        
$this->server_send(base64_encode($this->_username));
        
$this->server_send(base64_encode($this->_password), true);
        
$this->server_send("MAIL FROM: email@domain.de");
        
$this->server_send("RCPT TO: email@domain.de");
        
$this->server_send("DATA");
        
$hdr  "From: email@domain.de\r\n";
        
$hdr .= "To: email@domain.de\r\n";
        
$hdr .= "Reply-To: email@domain.de\r\n";
        
$hdr .= "Subject: Testmail\r\n";
        
$this->server_send($hdr);
        
$this->server_send("Das ist nur eine Testnachricht.");
        
$this->server_send($this->CRLF ".");
        
// end test
        
        
return true;
    }
    
    
/**
    * Send command to smtp server
    */
    
function server_send($command$private_info false)
    {
        
fputs($this->socket$command $this->CRLF);
        
        (!
$private_info) ? $this->add_backtrace("# $command" $this->CRLF) : $this->add_backtrace("# Omitting sensitive information" $this->CRLF);
        
        
$this->parse();
    }
    
    
/*
    * $@$ Internal functions
    */
    
    
private function connected()
    {
        if(!empty(
$this->smtp_conn)) {
            
$sock_status socket_get_status($this->socket);
            if(
$sock_status["eof"]) {
                
# hmm this is an odd situation... the socket is
                # valid but we aren't connected anymore
                //$this->Close();
                
return false;
            }
            return 
true# everything looks good
        
}
        return 
false;
    }
    
    private function 
parse()
    {
        
        
$msg fgets($this->socket1024);
        
$this->add_backtrace("#Server: " $msg);
        return 
$msg;
    }
    
    private function 
add_backtrace($msg)
    {
        if (
is_array($msg))
        while (
$ma each($msg)) { $this->backtrace .= $ma['value'] . $this->CRLF; }
        else
        
$this->backtrace .= $msg;
    }
    
    function 
close()
    {
        if (
$this->socket)
        {
            
$this->server_send("QUIT");
            
$this->parse();
            
fclose($this->socket);
            return 
true;
        }
        return 
false;
    }
    
    
// destructor
    
function __destruct()
    {
        
        
$this->close();
        
$sql "INSERT INTO `" LOG_TABLE "` (
        `action`, `time`, `rate`
        ) VALUES (
        '" 
$this->backtrace "',
        UNIX_TIMESTAMP(),
        6);"
;
        
parent::sql_Execute($sql);
    }

email, host, usernam und passwort wurden natürlich geändert ^^

wäre dankbar wenn mir da einer weiterhelfen kann...
bLaCk-DrAg0n ist offline   Mit Zitat antworten
Alt 12.06.07, 14:20   #2 (permalink)
 
Registriert seit: 20.03.07
System.I/O Leistung: Facit NTK
System.I/O eine Nachricht über ICQ schicken
Likes: 0
Standard

moin,
Zitat:
Ich habe jedoch das problem das das script nach 60 secs aufhört... (Maximum execution time of 60 seconds exceeded).
Das lässt sich in der php.ini einstellen:
Code:
max_execution_time
oder aus dem script selbst herraus:
Code:
set_time_limit(9999);
Allerdings darf php nicht im safemode sein, sonst hats kein effekt.

MfG
System.I/O ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 12.06.07, 14:53   #3 (permalink)
Themenstarter
 
Registriert seit: 04.10.05
bLaCk-DrAg0n Leistung: Facit NTK
bLaCk-DrAg0n eine Nachricht über ICQ schicken
Likes: 0
Standard

ja soweit hab ich auch schon gedacht nur ist es ja nicht der sinn den server zu ändern sondern das script so anzupassen das es überall läuft und nich nur auf servern mit sondereinstellungen ^^

PHP-Code:
private function parse()
{
        
$msg fgets($this->socket1024); // <-- da hat er angeblich die zeitüberschreitung
        
$this->add_backtrace("#Server: " $msg);
        return 
$msg;

bLaCk-DrAg0n ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » SMTP Socketverbindungen...
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
C++ LIB für SMTP/POP3 Dawen Code Kitchen 2 07.02.08 21:33
smtp bei nem rootserver bikmaek Linux/UNIX 0 07.12.05 08:40
JavaMail - SMTP kito Code Kitchen 0 02.09.05 13:23
SMTP Server? Maniact Internet Allgemein 0 23.03.04 19:09
Wie genau ist das mit dem SMTP ? kklaus1 Internet Allgemein 10 22.07.03 08:13


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61