2013-10-13 1 views
0

Почему во второй ситуации, когда twilio вызывает страницу? Есть ли символы, которые могут быть возвращены из api, которые делают письмо недоступным?Почему почта php отправляется, но не принимается, если я вручную не вызову скрипт?

1) Если я нахожу URL-адрес в броузере, он пытается сделать wav-файл в моей папке с записями, и я получаю письма и текстовые сообщения всем получателям. Выведенный ниже результат подается, а «1» указывает, что сообщение было отправлено.

2) Если twilio вызывает страницу и обрабатывает xml, фактическое сообщение записывается на мой сервер, а вывод ниже обслуживается twilio (который я проверил в своей учетной записи), но никто не получает письмо или текст. Тело xml по-прежнему показывает «1» после допроса, указывая, что сообщение отправлено.

Мой сценарий:

<?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 = "[email protected]"; 
$subject = "Voicemail from ".$_REQUEST['From']; 
$message = "Click below to listen to your message:\n\r http://domain.com/twilio/".$name; 
$from = "[email protected]"; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
$to = "[email protected]"; 
mail($to,$subject,$message,$headers); 
$to = "[email protected]"; 
$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>"; 
?> 

выходы:

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

Я просто проверить, чтобы увидеть, что содержимое каждой переменной в функции PHP почты, когда Twilio вызывает сценарий, чтобы увидеть, если есть является символом, присутствующим в прямом сообщении twilio. Получается так:

$to = [email protected] 
$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:[email protected] 

Если я вызываю скрипт вручную в браузере они:

$to = [email protected] 
$subject = Voicemail from 
$message = Click below to listen to your message: 

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

From:[email protected] 
+0

ли вы проверить папку со спамом? –

+0

Я сделал это сейчас, но его там нет. В первом случае, когда я вручную вызываю сценарий, я получаю письма обычно. Во втором сообщении не отправляется, даже в папку со спамом. –

ответ

0

Я попытался удалить «+» из предмета без успеха, но когда я удалил весь телефонный номер с объекта, который он работает, в любом случае. Письма и тексты доставляются надлежащим образом. Это не имеет никакого смысла для меня. Может быть, его богини-хостинг возится с моей жизнью снова.

0

Возможно, у строки есть плохие символы, которые разрушают вызов mail(), но эхо прозрачно. Попробуйте очистить строку перед тем, как поместить ее в mail().

Что-то вроде:

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