Skip to content

Instantly share code, notes, and snippets.

@bosb
Last active March 20, 2018 13:34
Show Gist options
  • Save bosb/5c27c8a41c3d67a08a4961d4e8e7b42d to your computer and use it in GitHub Desktop.
Save bosb/5c27c8a41c3d67a08a4961d4e8e7b42d to your computer and use it in GitHub Desktop.
<?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:&lt;any.name@localhost.de&gt;: <br>\n".$buffer."<br>";
fputs($socket, "rcpt to:<$recipient_adress>\r\n");
$buffer =fgets($socket, 4096);
$buffer .=fgets($socket, 4096);
echo "\nrcpt to:&lt;$recipient_adress&gt;: <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