function SendMail($ServerName, $Port, $ToEmail, $FromEmail, $Subject, $Body, $Header = '', $Username = '', $Password = '') {
$smtp = fsockopen($ServerName, $Port);
$InputBuffer = fgets($smtp, 1024);
$GECode=220;
if (substr($InputBuffer,0,3) != $GECode) {
logit('Connect:'.$InputBuffer);
fclose($smtp);
return FALSE;
}
fputs($smtp, "HELO $ServerName\n");
$InputBuffer = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit('HELO:'.$InputBuffer);
return FALSE;
}
if ($Username != '') {
fputs($smtp,"AUTH LOGIN\n");
$smtpResponse = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit('AUTH'.$InputBuffer);
return FALSE;
}
if ($Username != '') {
fputs($smtp, base64_encode($Username)."\n");
$smtpResponse = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit($InputBuffer);
return FALSE;
}
}
if ($Password != '') {
fputs($smtp, base64_encode($Password)."\n");
$smtpResponse = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit($InputBuffer);
return FALSE;
}
}
}
fputs($smtp, "MAIL From:<$FromEmail>\n");
$InputBuffer = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit($InputBuffer);
return FALSE;
}
fputs($smtp, "RCPT To:<$ToEmail>\n");
$InputBuffer = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit($InputBuffer);
return FALSE;
}
fputs($smtp, "DATA\n");
$InputBuffer = fgets($smtp, 1024);
$GECode=354;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit($InputBuffer);
return FALSE;
}
fputs($smtp, "From: $FromEmail\n");
fputs($smtp, "To: $ToEmail\n");
if ($Header != '') {
fputs($smtp, "$Header");
}
fputs($smtp, "Subject: $Subject\n\n");
fputs($smtp, "$Body\r\n.\r\n");
fputs($smtp, "QUIT\n");
$InputBuffer = fgets($smtp, 1024);
$GECode=250;
if (substr($InputBuffer,0,3) != $GECode) {
fclose($smtp);
logit($InputBuffer);
return FALSE;
}
fclose($smtp);
return TRUE;