2011-03-02 19 views
5

Aquí hay algo extraño para ti.PHP5-IMAP '¡No tengo cuerpo!'

Estoy usando el Ipipi SMS al servicio de correo electrónico para enviar comandos de control a un script PHP.

puedo enviar mensajes de correo electrónico a mi buzón de correo, a continuación, leer y mostrarlos utilizando PHP-IMAP comandos como en este segmento de código:

$overview = imap_fetch_overview($inbox,$email_number,0); $message = imap_fetchbody($inbox,$email_number,2); echo $message;

Si envío un mensaje SMS al mailbox imap_fetchbody, devuelve vacío.

Sin embargo, si leo el buzón con un cliente de correo electrónico, el mensaje está allí. No creo que sea un problema Ipipi.

Si hago un var_dump($message) obtengo string(0) "".

+0

¿Usted ha mirado para ver si el operador de telefonía móvil se está formando el correo electrónico encabezados correctamente? – david

+0

He asumido, quizás ingenuamente, que si Thunderbird puede leer el mensaje, entonces los encabezados deben estar bien. – BillP

+0

Ayudaría tener un mensaje de muestra. – dkarp

Respuesta

5

Cuando se emite

$message = imap_fetchbody($inbox,$email_number,2); 

que está pidiendo el contenido de la parte 2 del mensaje. (Eso es lo que los medios.)

string imap_fetchbody (resource $imap_stream , int $msg_number , 
         string $section [, int $options = 0 ]) 

Es difícil saber sin ser capaz de ver un mensaje de muestra de la pasarela SMS, pero supongo que su mensaje no es una de varias partes y por lo tanto que doesn' t tiene una parte 2. ¿Qué sucede si sustituye por 2 cuando obtiene este mensaje en particular?

(En general, usted querrá mirar la estructura de los mensajes antes de decidir qué parte del cuerpo para ir a buscar. Se puede utilizar para este imap_fetchstructure.)

+0

dkarp: ¡Eres el hombre principal! Reemplazar el '2' con un '1' lo hace funcionar. También un correo electrónico estándar todavía funciona. Mi problema es que recogí el código de la web. Después de probar que funcionaba con un correo electrónico estándar, me quedé perplejo cuando no funcionó con el correo electrónico de sms. Supuse erróneamente que '2' era la parte estándar del cuerpo para solicitar. Tonto de mí. Muchas gracias por su ayuda. – BillP

+0

@BillP: si esto responde su pregunta, por favor [haga clic en el esquema de la marca de verificación] (http://stackoverflow.com/faq#howtoask) a la izquierda de la respuesta. Hace que la solución quede clara para la siguiente persona con el mismo problema ... – dkarp

+0

Lo he hecho, gracias de nuevo. – BillP