104 lines
3.3 KiB
PHP
Executable File
104 lines
3.3 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* BRAIN ENGINE - Email Sender via PMTA
|
|
* Usage: php brain_send_email.php <to> [from] [subject] [body_file]
|
|
*/
|
|
|
|
function sendViaPMTA($to, $from, $subject, $bodyHtml, $headers = []) {
|
|
$socket = fsockopen("127.0.0.1", 25, $errno, $errstr, 10);
|
|
if (!$socket) {
|
|
return ['success' => false, 'error' => "SMTP connect failed: $errstr"];
|
|
}
|
|
|
|
// Read greeting
|
|
fgets($socket, 512);
|
|
|
|
// EHLO
|
|
fputs($socket, "EHLO wevads.com\r\n");
|
|
while ($line = fgets($socket, 512)) {
|
|
if (substr($line, 3, 1) == ' ') break;
|
|
}
|
|
|
|
// MAIL FROM
|
|
fputs($socket, "MAIL FROM:<$from>\r\n");
|
|
$r = fgets($socket, 512);
|
|
if (substr($r, 0, 3) != '250') {
|
|
fclose($socket);
|
|
return ['success' => false, 'error' => "MAIL FROM rejected: $r"];
|
|
}
|
|
|
|
// RCPT TO
|
|
fputs($socket, "RCPT TO:<$to>\r\n");
|
|
$r = fgets($socket, 512);
|
|
if (substr($r, 0, 3) != '250') {
|
|
fclose($socket);
|
|
return ['success' => false, 'error' => "RCPT TO rejected: $r"];
|
|
}
|
|
|
|
// DATA
|
|
fputs($socket, "DATA\r\n");
|
|
fgets($socket, 512);
|
|
|
|
// Build message
|
|
$msg = "From: " . ($headers['from_name'] ?? 'WEVADS') . " <$from>\r\n";
|
|
$msg .= "To: $to\r\n";
|
|
$msg .= "Subject: $subject\r\n";
|
|
$msg .= "MIME-Version: 1.0\r\n";
|
|
$msg .= "Content-Type: text/html; charset=UTF-8\r\n";
|
|
$msg .= "X-Mailer: " . ($headers['x_mailer'] ?? 'WEVADS-Brain/1.0') . "\r\n";
|
|
if (!empty($headers['reply_to'])) $msg .= "Reply-To: {$headers['reply_to']}\r\n";
|
|
if (!empty($headers['list_unsubscribe'])) $msg .= "List-Unsubscribe: {$headers['list_unsubscribe']}\r\n";
|
|
|
|
// Custom headers
|
|
foreach ($headers as $k => $v) {
|
|
if (strpos($k, 'header_') === 0 && !empty($v)) {
|
|
$hname = substr($k, 7);
|
|
$msg .= "$hname: $v\r\n";
|
|
}
|
|
}
|
|
|
|
$msg .= "\r\n" . $bodyHtml . "\r\n.\r\n";
|
|
|
|
fputs($socket, $msg);
|
|
$result = fgets($socket, 512);
|
|
|
|
fputs($socket, "QUIT\r\n");
|
|
fclose($socket);
|
|
|
|
$success = (substr($result, 0, 3) == '250');
|
|
return ['success' => $success, 'response' => $result];
|
|
}
|
|
|
|
// CLI usage
|
|
if (php_sapi_name() === 'cli') {
|
|
$to = $argv[1] ?? null;
|
|
$from = $argv[2] ?? 'brain@wevads.com';
|
|
$subject = $argv[3] ?? '🧠 Brain Engine Test - ' . date('Y-m-d H:i:s');
|
|
|
|
if (!$to) {
|
|
echo "Usage: php brain_send_email.php <to> [from] [subject]\n";
|
|
exit(1);
|
|
}
|
|
|
|
$body = "<html><body style='font-family:Arial;background:#1a1a2e;color:#fff;padding:40px;'>
|
|
<div style='max-width:600px;margin:auto;background:#16213e;border-radius:15px;padding:30px;'>
|
|
<h1 style='color:#a855f7;text-align:center;'>🧠 WEVADS Brain Engine</h1>
|
|
<h2 style='color:#22c55e;text-align:center;'>✅ Test Email</h2>
|
|
<p><strong>Date:</strong> " . date('Y-m-d H:i:s') . "</p>
|
|
<p><strong>From:</strong> $from</p>
|
|
<p><strong>To:</strong> $to</p>
|
|
<p><strong>Server:</strong> " . gethostname() . "</p>
|
|
</div></body></html>";
|
|
|
|
echo "📧 Sending to: $to\n";
|
|
echo "📤 From: $from\n";
|
|
|
|
$result = sendViaPMTA($to, $from, $subject, $body);
|
|
|
|
if ($result['success']) {
|
|
echo "✅ Email sent successfully!\n";
|
|
} else {
|
|
echo "❌ Failed: " . ($result['error'] ?? $result['response']) . "\n";
|
|
}
|
|
}
|