我正在尝试使用php阅读电子邮件,我正在使用下面的代码,但它的错误Fatal error: Call to undefined function imap_open() in /testpage2/testmail.php on line 18
任何人都可以指导我。谢谢
<?php
$codes = array("7bit","8bit","binary","base64","quoted-printable","other");
$stt = array("Text","Multipart","Message","Application","Audio","Image","Video","Other");
$pictures = 0;
$html = "";
# Connect to the mail server and grab headers from the mailbox
$mail = imap_open('{mail.xxxxxxxx.com:110/pop3}', 'xxxxxx@xxxxxxxx.com', 'xxxxxxxxx');
$headers = imap_headers($mail);
# loop through each email
for ($n=1; $n<=count($headers); $n++) {
$html .= "<h3>".$headers[$n-1]."</h3><br />";
# Read the email structure and decide if it's multipart or not
$st = imap_fetchstructure($mail, $n);
$multi = $st->parts;
$nparts = count($multi);
if ($nparts == 0) {
$html .= "* SINGLE part email<br>";
} else{
$html .= "* MULTI part email<br>";
}
# look at the main part of the email, and subparts if they're present
for ($p=0; $p<=$nparts; $p++) {
$text =imap_fetchbody($mail,$n,$p);
if ($p == 0) {
$it = $stt[$st->type];
$is = ucfirst(strtolower($st->subtype));
$ie = $codes[$st->encoding];
} else {
$it = $stt[$multi[$p-1]->type];
$is = ucfirst(strtolower($multi[$p-1]->subtype));
$ie = $codes[$multi[$p-1]->encoding];
}
# Report on the mimetype
$mimetype = "$it/$is";
$html .= "<br /><b>Part $p ... ";
$html .= "Encoding: $ie for $mimetype</b><br />";
# decode content if it's encoded (more types to add later!)
if ($ie == "base64") {
$realdata = imap_base64($text);
}
if ($ie == "quoted-printable") {
$realdata = imap_qprint($text);
}
# If it's a .jpg image, save it (more types to add later)
if ($mimetype == "Image/Jpeg") {
$picture++;
$fho = fopen("imx/mp$picture.jpg","w");
fputs($fho,$realdata);
fclose($fho);
# And put the image in the report, limited in size
$html .= "<img src=/demo/imx/mp$picture.jpg width=150><br />";
}
# Add the start of the text to the message
$shorttext = substr($text,0,800);
if (strlen($text) > 800) $horttext .= " ...\n";
$html .= nl2br(htmlspecialchars($shorttext))."<br>";
}
}
# report results ...
?>
<html>
<head>
<title>Reading a Mailbox including multipart emails from within PHP</title>
</head>
<body>
<h1>Mailbox Summary ....</h1>
<?= $html ?>
</body>
</html>
答案 0 :(得分:1)
您需要enable IMAP in PHP才能使用它。如果您执行phpinfo()
,则可以确认是否已安装。
答案 1 :(得分:1)
正如其他人所说启用或安装imap扩展名(例如ubuntu / debian中的php5-imap)。顺便说一句。看看Fetch,这是一个很好的面向OOP的库,用于处理IMAP。
答案 2 :(得分:1)
如果您使用XAMPP启用php_imap.dll
extension
转到XAMPP/php
更改php.ini file
;extension=php_imap.dll
要
extension=php_imap.dll
答案 3 :(得分:0)
您的服务器上没有安装PHP的IMAP
模块。
安装 php5-imap 。
答案 4 :(得分:0)
检查服务器中是否已启用天气imap,如果未启用则表示启用它。如果未安装imap扩展名意味着安装并启用它,请检查此链接http://www.php.net/manual/en/imap.setup.php
答案 5 :(得分:0)
如果您有 php 7+
,请更新您的 php.ini
文件
取消注释
;extension=imap
到
extension=imap
如果您找不到 extension=imap
,请手动将其添加到您的 php.ini
部分,只需搜索 ;extension
最后重启Apache