PHP Code:
<?php
/*
USAGE
$sServer = 'localhost';
$sDomain = 'localhost';
$sUser = 'myusername';
$sPass = 'mypassword';
$sFromDisplay = 'Mr. User';
$sFrom = 'myusername@powerful';
$sToDisplay = 'Mr. User';
$sTo = 'myusername@powerful';
$sSubject = 'test';
$sBody = "This is my test.";
$mailer->SendMail(
$sServer, $sDomain, 0, 0, TRUE, $sUser, $sPass,
$sFromDisplay, $sFrom, $sToDisplay, $sTo, $sSubject, $sBody,
TRUE, TRUE
);
*/
class ClassOfMailer {
function SendMail(
$sServer='localhost', $sDomain='localhost', $nPort, $nTimeout, $bAuth, $sUser, $sPass,
$sFromDisplay, $sFrom, $sToDisplay, $sTo, $sSubject, $sBody,
$bEchoCommands=False, $bEchoResponses=False
) {
$nPort = empty($nPort) || $nPort == '' || $nPort == 0 ? 25 : $nPort;
$nTimeout = empty($nTimeout) || $nTimeout == '' || $nTimeout == 0 ? 30 : $nTimeout;
$bAuth = empty($bAuth) || $bAuth == '' ? 0 : 1;
$sDate = gmdate('r');
$sMessage = "To: $sToDisplay <$sTo>\r\nFrom: $sFromDisplay <$sFrom>\r\nDate: $sDate\r\nSubject: $sSubject\r\n\r\n$sBody";
$hMail = $this->_SMTPConnect($sServer, $nPort, $nTimeout, $bEchoCommands, $bEchoResponses);
$this->_SMTPWrite($hMail, "EHLO $sDomain\r\n", $bEchoCommands);
sleep(1);
if ($bAuth) {
$this->_SMTPWrite($hMail, "AUTH LOGIN\r\n", $bEchoCommands);
$this->_SMTPWrite($hMail, base64_encode($sUser) . "\r\n", $bEchoCommands);
$this->_SMTPWrite($hMail, base64_encode($sPass) . "\r\n", $bEchoCommands);
sleep(1);
}
$this->_SMTPWrite($hMail, "MAIL FROM:<$sFrom>\r\n", $bEchoCommands);
$this->_SMTPWrite($hMail, "RCPT TO:<$sTo>\r\n", $bEchoCommands);
$this->_SMTPWrite($hMail, "DATA\r\n", $bEchoCommands);
$this->_SMTPWrite($hMail, "$sMessage\r\n.\r\n", $bEchoCommands);
$this->_SMTPWrite($hMail, "QUIT\r\n", $bEchoCommands);
$this->_SMTPClose($hMail);
}
private function _SMTPConnect($sHost, $nPort, $nTimeout=30, $bEchoCommands=False, $bEchoResponses=False) {
$nErr = 0;
$sErr = 0;
if ($bEchoCommands) {
echo "CONNECTING TO $sHost\r\n";
}
$hMail = fsockopen($sHost, $nPort, $nErr, $sErr, $nTimeout);
if (!$hMail) {
if ($bEchoCommands) {
echo "CONNECTION FAILED\r\n";
}
return False;
}
if ($bEchoCommands) {
echo "SUCCESS\r\n";
}
$sResponse = fgets($hMail,1);
$nBytesLeft = socket_get_status($hMail);
if ($nBytesLeft > 0) {
$sResponse .= @ fread($hMail, 1024);
}
if ($bEchoResponses) {
echo $sResponse;
}
return $hMail;
}
private function _SMTPWrite($hMail, $sCommand, $bEchoCommands=False) {
if ($bEchoCommands) {
echo $sCommand;
}
fputs($hMail, $sCommand);
$sResponse = fgets($hMail,1);
$nBytesLeft = socket_get_status($hMail);
if ($nBytesLeft > 0) {
$sResponse .= @ fread($hMail, 1024);
}
return $sResponse;
}
private function _SMTPClose($hMail) {
fclose($hMail);
}
}
// THIS INSTANTIATES THE CLASS SIMPLY BY INCLUDING THE SCRIPT
$mailer =& new ClassOfMailer();
?>
Bookmarks