2011-03-02 38 views
5

这是你的一个奇怪的。PHP5-IMAP'我没有身体!'

我正在使用Ipipi SMS电子邮件服务将控制命令发送到PHP脚本。

我只能将电子邮件发送到我的邮箱,然后读取和使用PHP-IMAP命令,在这个代码段中显示出来:

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

如果我发送一个短信到mailbox imap_fetchbody,它返回空。

但是,如果我用电子邮件客户端阅读邮箱,邮件就在那里。我不认为这是一个Ipipi问题。

如果我做了var_dump($message)我得到string(0) ""

+0

你有没有看,看看无线运营商正在形成的电子邮件标题正确吗? – david 2011-03-02 16:39:52

+0

我也许天真地认为,如果Thunderbird可以阅读邮件,那么邮件头必须正常。 – BillP 2011-03-02 16:53:45

+0

这将有助于有一个示例消息。 – dkarp 2011-03-02 19:28:58

回答

5

当你发出

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

你问的消息的第2部分的内容。 (这是什么手段。)

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

很难知道不能够看到从SMS网关的样本消息,但我猜想,你的消息是不是多,因此它不”没有第2部分。如果在取回此特定消息时将1替换为2,会发生什么情况?

(一般情况下,你会想看看消息结构决定哪些身体部位获取。您可以使用imap_fetchstructure此之前。)

+0

dkarp:你是主要的人! 将'2'替换为'1'会使其工作。标准电子邮件仍然有效。 我的问题是,我选择了离开网络的代码。经过测试,它与标准的电子邮件工作,当它不适用于短信电子邮件我被困住了。 我错误地认为'2'是要求的标准身体部位。傻我。 非常感谢您的帮助。 – BillP 2011-03-02 20:34:02

+0

@BillP:如果这回答了您的问题,请在答案左侧点击[复选标记](http://stackoverflow.com/faq#howtoask)。它使解决方案清楚地告诉下一个具有相同问题的人... – dkarp 2011-03-02 20:35:53

+0

已经这样做了,再次感谢。 – BillP 2011-03-02 20:45:10