0

Why might php mail not be received in the second case where twilio is calling the page? Are there characters that might be returned from the api that make the email undeliverable?

1) If I type the URL into the broweser, it attempts to make a wav file in my recordings folder and I get the emails and text messages to all the recipients. The output below is served and the "1" indicates the message was sent.

2) If twilio calls the page and handles the xml, the actual message is recorded to my server, and the output below is served to twilio (which I have verified in my account), but no one receives the email or text. The body of the xml still shows "1" after good bye, indicating the message was sent.

My script:

<?php
date_default_timezone_set('America/New_York');
//copy the remote wav file to my server
$recording = file_get_contents($_REQUEST['RecordingUrl']);
$name = "recordings/".str_replace("+","",$_REQUEST['Caller'])."-".date('Y-m-d-G-i-s',time()).".wav";
$fh = fopen("../".$name, 'w') or die("can't open file");
$stringData = $recording;
fwrite($fh, $stringData);
fclose($fh);

//email the people that need to get the message
$to = "email1@yahoo.com";
$subject = "Voicemail from ".$_REQUEST['From'];
$message = "Click below to listen to your message:\n\r  http://domain.com/twilio/".$name;
$from = "email2@domain.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
$to = "email3@domain.com";
mail($to,$subject,$message,$headers);
$to = "9545555555@messaging.sprintpcs.com";
$sent = mail($to,$subject,$message,$headers);

header("content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n
            <Response>
                <Say>Thank you for your message. Good bye.".$sent."</Say>
                <Hangup/>
            </Response>";
?>

outputs:

        <Response>
            <Say>Thank you for your message. Good bye.1</Say>
            <Hangup/>
        </Response>

I just check to see what the contents of each variable in the php mail function are when twilio calls the script to see if there is a character present from a live twilio message. It comes out like this:

$to = 9545555555@messaging.sprintpcs.com
$subject = Voicemail from +19545555555

$message = Click below to listen to your message:

  http://domain.com/twilio/recordings/19545555555-2013-10-12-22-57-03.wav

$headers = From:email2@domain.com

If I call the script manually in the browser they are:

$to = 9545555555@messaging.sprintpcs.com
$subject = Voicemail from 
$message = Click below to listen to your message:

  http://domain.com/twilio/recordings/-2013-10-12-23-04-37.wav

From:email2@domain.com
Altimus Prime
  • 2,207
  • 2
  • 27
  • 46

2 Answers2

0

I tried removing the "+" out of the subject with no success, but when I removed the entire phone number from the subject it works every which way. The emails and texts are delivered appropriately. It makes no sense to me. Maybe its godaddy webhosting messing with my life again.

Altimus Prime
  • 2,207
  • 2
  • 27
  • 46
0

Perhaps the from string has bad characters that ruin the mail() call, but echo transparently. Try cleaning your string before putting it into mail().

Something like:

$subject= preg_replace("/[^a-zA-Z0-9]+/", "", $_REQUEST['From']);
RockwoodON
  • 149
  • 3