<?php
class smtp {
var $strStatus;
var $strSMTP;
function smtp()
{
$this->strStatus = '';
$this->strSMTP = 0;
}
function open($server, $port = 25) {
$this->strSMTP = fsockopen($server, $port);
if ($this->strSMTP < 0) return FALSE;
$line = fgets($this->strSMTP, 1024);
return $this->strSMTP;
}
function helo($strHost) {
fputs($this->strSMTP, »helo $strHost\r\n«);
$line = fgets($this->strSMTP, 1024);
return $this->getresult($line, 2);
}
function from($from) {
fputs($this->strSMTP, »MAIL FROM: <$from>\r\n«);
$line = fgets($this->strSMTP, 1024);
return $this->getresult($line, 2);
}
function to($to) {
fputs($this->strSMTP, »RCPT TO: <$to>\r\n«);
$line = fgets($this->strSMTP, 1024);
return $this->getresult($line, 2);
}
function data($subject, $data) {
fputs($this->strSMTP, »DATA\r\n«);
while ($line = fgets($this->strSMTP, 1024)) {
if ($this->getresult($line, 3)) break;
}
if ($this->getresult($line, 3)) {
fputs($this->strSMTP, »Subject: $subject\r\n«);
fputs($this->strSMTP, »$data\r\n\r\n«);
fputs($this->strSMTP, ».\r\n«);
$line = fgets($this->strSMTP, 1024);
return $this->getresult($line, 2);
} else {
return FALSE;
}
}
function quit() {
fputs($this->strSMTP, »QUIT\r\n«);
$line = fgets($this->strSMTP, 1024);
return $this->getresult($line, 2);
}
function getresult($line, $code)
{
$this->strStatus = substr($line, 0, 1024);
if (substr($this->strStatus, 0, 1) != $code) {
return FALSE;
} else {
return TRUE;
}
}
function showresult()
{
echo '<code style=»color:red«>';
echo $this->strStatus;
echo '</code><br>';
}
} /* end class pop3 */
$mybox = new smtp;
$smtpserver = 'smtp.kundenserver.de';
$pcname = 'myPC';
$fromname = 'phpbooksite@comzept.de';
$toname = 'm6241390-open@comzept.de';
$error = FALSE;
while (TRUE) {
echo 'Verbindung: ';
if (!$mybox->open($smtpserver)) {
echo »[FEHLER] Verbindung nicht möglich<br>\n«;
$mybox->showresult();
$error = TRUE;
break;
} else {
echo »erfolgreich<br>\n«;
$mybox->showresult();
}
echo 'Anmeldung: ';
if (!$mybox->helo($pcname)) {
echo »[FEHLER] HELO fehlgeschlagen!<br>\n«;
$mybox->showresult();
$error = TRUE;
break;
} else {
echo »erfolgreich angemeldet<br>\n«;
$mybox->showresult();
}
echo 'Absender: ';
if (!$mybox->from($fromname)) {
echo »[FEHLER] Kommando nicht erkannt!<br>\n«;
$mybox->showresult();
$error = TRUE;
break;
} else {
echo »akzeptiert<br>\n«;
$mybox->showresult();
}
echo 'Empfänger: ';
if (!$mybox->to($toname)) {
echo »[FEHLER] Kommando nicht erkannt!<br>\n«;
$error = TRUE;
break;
} else {
echo »akzeptiert<br>\n«;
$mybox->showresult();
}
break;
} /* end while */
echo 'Daten: ';
$data = <<<SMTPMAIL
Dieser Text wurde mit einer eigenen SMTP-Klasse gesendet!
SMTPMAIL;
if (!$mybox->data('Testmail per SMTP', $data)) {
echo »[FEHLER] Kommando nicht erkannt!<br>\n«;
$mybox->showresult();
exit;
} else {
echo »akzeptiert<br>\n«;
$mybox->showresult();
}
echo $mybox->quit();
?>
|