diff options
Diffstat (limited to 'config/freeswitch/freeswitch_mailto.tmp')
-rw-r--r-- | config/freeswitch/freeswitch_mailto.tmp | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/config/freeswitch/freeswitch_mailto.tmp b/config/freeswitch/freeswitch_mailto.tmp new file mode 100644 index 00000000..23645570 --- /dev/null +++ b/config/freeswitch/freeswitch_mailto.tmp @@ -0,0 +1,240 @@ +<?php +/* $Id$ */ +/* + freeswitch_mailto.php + Copyright (C) 2008 Mark J Crane + All rights reserved. + + FreeSWITCH (TM) + http://www.freeswitch.org/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require_once("config.inc"); +require_once("/usr/local/pkg/freeswitch.inc"); +global $config; + +$tmp_smtphost = $config['installedpackages']['freeswitchsettings']['config'][0]['smtphost']; +$tmp_smtpsecure = $config['installedpackages']['freeswitchsettings']['config'][0]['smtpsecure']; //options "", "TLS", "SSL" +$tmp_smtpsecure = strtolower($tmp_smtpsecure); +$tmp_smtpauth = $config['installedpackages']['freeswitchsettings']['config'][0]['smtpauth']; // SMTP authentication: true or false +$tmp_smtpusername = $config['installedpackages']['freeswitchsettings']['config'][0]['smtpusername']; +$tmp_smtppassword = $config['installedpackages']['freeswitchsettings']['config'][0]['smtppassword']; +$tmp_smtpfrom = $config['installedpackages']['freeswitchsettings']['config'][0]['smtpfrom']; +$tmp_smtpfromname = $config['installedpackages']['freeswitchsettings']['config'][0]['smtpfromname']; + + +ini_set(max_execution_time,900); //15 minutes +ini_set('memory_limit', '96M'); +$fd = fopen("php://stdin", "r"); + +$email = file_get_contents ("php://stdin"); + +fclose($fd); + +if($fd){ + $fp = fopen("/tmp/voicemailtoemail.txt", "w"); +} + + +ob_end_clean(); +ob_start(); + + +//get main header and body + $tmparray = split("\n\n", $email); + $mainheader = $tmparray[0]; + $maincontent = substr($email, strlen($mainheader), strlen($email)); + +//get the boundary + $tmparray = split("\n", $mainheader); + $contenttmp = $tmparray[1]; //Content-Type: multipart/mixed; boundary="XXXX_boundary_XXXX" + $tmparray = split('; ', $contenttmp); //boundary="XXXX_boundary_XXXX" + $contenttmp = $tmparray[1]; + $tmparray = split('=', $contenttmp); //"XXXX_boundary_XXXX" + $boundary = $tmparray[1]; + $boundary = trim($boundary,'"'); + //echo "boundary: $boundary\n"; + +//put the main headers into an array + $mainheaderarray = split("\n", $mainheader); + //print_r($mainheaderarray); + foreach ($mainheaderarray as $val) { + $tmparray = split(': ', $val); + //print_r($tmparray); + $var[$tmparray[0]] = trim($tmparray[1]); + } + + $var['To'] = str_replace("<", "", $var['To']); + $var['To'] = str_replace(">", "", $var['To']); + + echo "To: ".$var['To']."\n"; + echo "From: ".$var['From']."\n"; + echo "Subject: ".$var['Subject']."\n"; + //print_r($var); + echo "\n\n"; + + +// split mime type multi-part into each part + $maincontent = str_replace($boundary."--", $boundary, $maincontent); + $tmparray = split("--".$boundary, $maincontent); + +// loop through each mime part + $i=0; + foreach ($tmparray as $mimepart) { + + $mimearray = split("\n\n", $mimepart); + $subheader = $mimearray[0]; + $headermimearray = split("\n", trim($subheader)); + + $x=0; + foreach ($headermimearray as $val) { + if(stristr($val, ':') === FALSE) { + $tmparray = split('=', $val); //':' not found + if (trim($tmparray[0]) == "boundary") { + $subboundary = $tmparray[1]; + $subboundary = trim($subboundary,'"'); + //echo "subboundary: ".$subboundary."\n"; + } + } + else { + $tmparray = split(':', $val); //':' found + } + + //print_r($tmparray); + $var[trim($tmparray[0])] = trim($tmparray[1]); + } + //print_r($var); + + + $contenttypearray = split(' ', $headermimearray[0]); + + if ($contenttypearray[0] == "Content-Type:") { + $contenttype = trim($contenttypearray[1]); + + switch ($contenttype) { + case "multipart/alternative;": + + //echo "type: ".$contenttype."\n"; + $content = trim(substr($mimepart, strlen($subheader), strlen($mimepart))); + + $content = str_replace($subboundary."--", $subboundary, $content); + $tmpsubarray = split("--".$subboundary, $content); + foreach ($tmpsubarray as $mimesubsubpart) { + + $mimesubsubarray = split("\n\n", $mimesubsubpart); + $subsubheader = $mimesubsubarray[0]; + + $headersubsubmimeearray = split("\n", trim($subsubheader)); + $subsubcontenttypearray = split(' ', $headersubsubmimeearray[0]); + //echo "subsubcontenttypearray[0] ".$subsubcontenttypearray[0]."\n"; + + if ($subsubcontenttypearray[0] == "Content-Type:") { + $subsubcontenttype = trim($subsubcontenttypearray[1]); + switch ($subsubcontenttype) { + case "text/plain;": + $textplain = trim(substr($mimesubsubpart, strlen($subsubheader), strlen($mimesubsubpart))); + //echo "text/plain: $textplain\n"; + break; + case "text/html;": + $texthtml = trim(substr($mimesubsubpart, strlen($subsubheader), strlen($mimesubsubpart))); + //echo "text/html: $texthtml\n"; + break; + } + } //end if + + + } //end foreach + + break; + case "audio/wav;": + //echo "type: ".$contenttype."\n"; + $strwav = trim(substr($mimepart, strlen($subheader), strlen($mimepart))); + //echo "\n*** begin wav ***\n".$strwav."\n*** end wav ***\n"; + break; + + }//end switch + } //end if + + $i++; + + } //end foreach + + +//send the email + + include "class.phpmailer.php"; + include "class.smtp.php"; ; // optional, gets called from within class.phpmailer.php if not already loaded + + $mail = new PHPMailer(); + + $mail->IsSMTP(); // set mailer to use SMTP + $mail->SMTPAuth = $tmp_smtpauth; // turn on/off SMTP authentication + $mail->Host = $tmp_smtphost; + if (strlen($tmp_smtpsecure)>0) { + $mail->SMTPSecure = $tmp_smtpsecure; + } + if ($tmp_smtpauth) { + $mail->Username = $tmp_smtpusername; + $mail->Password = $tmp_smtppassword; + } + + + $mail->From = $tmp_smtpfrom; + $mail->FromName = $tmp_smtpfromname; + $mail->Subject = $var['Subject']; + $mail->AltBody = $textplain; // optional, comment out and test + $mail->MsgHTML($texthtml); + + + $tmp_to = $var['To']; + $tmp_to = str_replace(";", ",", $tmp_to); + $tmp_to_array = split(",", $tmp_to); + foreach($tmp_to_array as $tmp_to_row) { + if (strlen($tmp_to_row) > 0) { + $mail->AddAddress($tmp_to_row); + } + } + + if (strlen($strwav) > 0) { + //$mail->AddAttachment("/usr/local/freeswitch/data/domain/example.wav"); // attachment + $filename='voicemail.wav'; $encoding = "base64"; $type = "audio/wav"; + $mail->AddStringAttachment(base64_decode($strwav),$filename,$encoding,$type); + } + unset($strwav); + + if(!$mail->Send()) { + echo "Mailer Error: " . $mail->ErrorInfo; + } + else { + echo "Message sent!"; + } + + +$content = ob_get_contents(); //get the output from the buffer +ob_end_clean(); //clean the buffer + +fwrite($fp, $content); +fclose($fp); + +?>
\ No newline at end of file |