aboutsummaryrefslogtreecommitdiffstats
path: root/config/freeswitch_dev/freeswitch_mailto.tmp
diff options
context:
space:
mode:
Diffstat (limited to 'config/freeswitch_dev/freeswitch_mailto.tmp')
-rw-r--r--config/freeswitch_dev/freeswitch_mailto.tmp243
1 files changed, 243 insertions, 0 deletions
diff --git a/config/freeswitch_dev/freeswitch_mailto.tmp b/config/freeswitch_dev/freeswitch_mailto.tmp
new file mode 100644
index 00000000..fa27ff68
--- /dev/null
+++ b/config/freeswitch_dev/freeswitch_mailto.tmp
@@ -0,0 +1,243 @@
+<?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("/etc/inc/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 "/usr/local/www/packages/freeswitch/class.phpmailer.php";
+ include "/usr/local/www/packages/freeswitch/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
+ if ($tmp_smtpauth == "true") {
+ $mail->SMTPAuth = $tmp_smtpauth; // turn on/off SMTP authentication
+ }
+ $mail->Host = $tmp_smtphost;
+ if (strlen($tmp_smtpsecure)>0) {
+ $mail->SMTPSecure = $tmp_smtpsecure;
+ }
+ if ($tmp_smtpusername) {
+ $mail->Username = $tmp_smtpusername;
+ $mail->Password = $tmp_smtppassword;
+ }
+ $mail->SMTPDebug = 2;
+
+
+ $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