Last active
March 20, 2018 13:34
-
-
Save bosb/5c27c8a41c3d67a08a4961d4e8e7b42d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
# script to feed HTML to SMTP to put email in inbox of local webmailer | |
# Thorsten Bosbach 08/2016 | |
$script_name = 'telnet_mail.php'; | |
$smtp_host_name = 'localhost'; | |
$smtp_host_port = 24; // 25 | |
$smtp_greeting = 'LHLO'; // EHLO | |
$recipient_adress = 'testuser'; | |
define('PHP_QPRINT_MAXL', 75); | |
function leading_dot_fixed_php_quot_print_encode($str) | |
{ # SOURCE: http://php.net/manual/de/function.quoted-printable-encode.php#115840 (jurgen at edesign dot nl) | |
$lp = 0; | |
$ret = ''; | |
$hex = "0123456789ABCDEF"; | |
$length = strlen($str); | |
$str_index = 0; | |
while ($length--) { | |
if ((($c = $str[$str_index++]) == "\015") && ($str[$str_index] == "\012") && $length > 0) { | |
$ret .= "\015"; | |
$ret .= $str[$str_index++]; | |
$length--; | |
$lp = 0; | |
} else { | |
if (ctype_cntrl($c) | |
|| (ord($c) == 0x7f) | |
|| (ord($c) & 0x80) | |
|| ($c == '=') | |
|| (($c == ' ') && ($str[$str_index] == "\015"))) | |
{ | |
if (($lp += 3) > PHP_QPRINT_MAXL) | |
{ | |
$ret .= '='; | |
$ret .= "\015"; | |
$ret .= "\012"; | |
$lp = 3; | |
} | |
$ret .= '='; | |
$ret .= $hex[ord($c) >> 4]; | |
$ret .= $hex[ord($c) & 0xf]; | |
} | |
else | |
{ | |
if ((++$lp) > PHP_QPRINT_MAXL) | |
{ | |
$ret .= '='; | |
$ret .= "\015"; | |
$ret .= "\012"; | |
$lp = 1; | |
} | |
$ret .= $c; | |
if($lp == 1 && $c == '.') { | |
$ret .= '.'; | |
$lp++; | |
} | |
} | |
} | |
} | |
return $ret; | |
} | |
?> | |
<?php | |
if(!isset($_POST['message'])) { | |
?> | |
<form name="contactform" method="post" action="<?=$script_name?>"> | |
<input type="submit" value="Insert into OX Mail"> | |
<br> | |
<label for="subject">Title of the Email: *</label> | |
<input type="text" name="subject" size="100" ></input> | |
<br> | |
<label for="message">Paste the HTML of the Email: *</label> | |
<br> | |
<textarea name="message" cols="200" rows="50"></textarea> | |
<br> | |
</form> | |
<?php | |
} else { | |
$message = $_POST['message']; | |
if(isset($_POST['subject'])) { | |
$subject = $_POST['subject']; | |
} else { | |
$subject = 'test ohne namen'; | |
} | |
$socket = fsockopen($smtp_host_name, $smtp_host_port, $errno, $errstr); | |
if($socket) { | |
echo "Connected <br /><br />"; | |
} else { | |
echo "Connection failed!<br /><br />"; | |
} | |
$buffer = ""; | |
stream_set_timeout ( $socket , 1); | |
fputs($socket, "$smtp_greeting mail.localhost.de\r\n"); | |
$buffer =fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
echo "\n$smtp_greeting mail.localhost.de: <br>\n".$buffer."<br>"; | |
fputs($socket, "mail from:<any.name@localhost.de>\r\n"); | |
$buffer =fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
echo "\nmail from:<any.name@localhost.de>: <br>\n".$buffer."<br>"; | |
fputs($socket, "rcpt to:<$recipient_adress>\r\n"); | |
$buffer =fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
echo "\nrcpt to:<$recipient_adress>: <br>\n".$buffer."<br>"; | |
fputs($socket, "DATA\r\n"); | |
$buffer =fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
echo "\nDATA: <br>\n".$buffer."<br>"; | |
fputs($socket, "From: telnet_mail_script\r | |
To: OX webmail\r | |
Subject: ".$subject."\r | |
Date: Mon, 21 Jul 2014 09:00:36 -0000\r | |
MIME-Version: 1.0\r | |
X-Mailer: Internet Mail Service (5.5.2657.72)\r | |
Content-Type: multipart/alternative;\r | |
boundary=\"--==_NextPart_001_01C3FAEE.45605F10\"\r | |
This message is in MIME format. Since your mail reader does not\r | |
understand\r | |
this format, some or all of this message may not be legible.\r | |
\r | |
----==_NextPart_001_01C3FAEE.45605F10\r | |
Content-Type: text/plain\r | |
\r | |
----==_NextPart_001_01C3FAEE.45605F10\r | |
Content-Type: text/html; charset=UTF-8\r | |
Content-Transfer-Encoding: quoted-printable\r | |
".leading_dot_fixed_php_quot_print_encode($message)."\r | |
----==_NextPart_001_01C3FAEE.45605F10--\r | |
.\r | |
"); | |
$buffer =fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
echo "\nmessage text: <br>\n".$buffer."<br>"; | |
fputs($socket, "quit\r\n"); | |
$buffer =fgets($socket, 4096); | |
$buffer .=fgets($socket, 4096); | |
echo "\nquit: <br>\n".$buffer."<br>"; | |
fclose($socket); | |
echo "<br><a href='$script_name'> Nächste mail senden</a>"; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment