Php电子邮件附件提取
我正在尝试创建一段代码,它将进入邮箱并取出特定文件的附件。到目前为止,我只能查看电子邮件上是否有附件或没有附件 但我希望它能够从电子邮件中取出附件,然后将它们保存到指定的目录中。我试图取出的附件类型是.jpg 我尝试了在谷歌上找到的一系列不同的代码,我一直在尝试将其裁剪成适合我的代码,但到目前为止,我没有找到任何正确工作的代码 我想知道是否有人能帮我创建一段代码,能够从电子邮件中取出附件并将其存储在目录中 谢谢Php电子邮件附件提取,php,email,attachment,pop3,extraction,Php,Email,Attachment,Pop3,Extraction,我正在尝试创建一段代码,它将进入邮箱并取出特定文件的附件。到目前为止,我只能查看电子邮件上是否有附件或没有附件 但我希望它能够从电子邮件中取出附件,然后将它们保存到指定的目录中。我试图取出的附件类型是.jpg 我尝试了在谷歌上找到的一系列不同的代码,我一直在尝试将其裁剪成适合我的代码,但到目前为止,我没有找到任何正确工作的代码 我想知道是否有人能帮我创建一段代码,能够从电子邮件中取出附件并将其存储在目录中 谢谢 <?php /* connect to email */ $
<?php
/* connect to email */
$hostname = '{*****.com:110/pop3}INBOX';
$username = '*****';
$password = '*****';
// try to connect
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to server: ' . imap_last_error());
// grab emails
$emails = imap_search($inbox,'ALL');
// Search for the 39th email, which has an attachment
$count = 39;
// Fetch all the information about an email
$attachment = imap_fetchstructure($inbox, $count);
// find out how may parts the object has
$numparts = count($attachment->parts);
// find if if multipart message
if ($numparts >= 2) {
foreach ($attachment->parts as $part) {
if ($part->disposition == "INLINE") {
// inline message. Show number of lines
printf("Inline message has %s lines<BR>", $part->lines);
} elseif ($part->disposition == "ATTACHMENT") {
// an attachment
echo "Attachment found!";
// print out the file name
echo "Filename: ", $part->dparameters[0]->value;
}
}
}
//}
else {
// only one part so get some useful info
echo "No attachment";
}
imap_close($imap);
?>
而不是
imap\u search
我使用imap\u check
来检索邮件概述,下面的工作正常。
查看通过imap\u check
找到的消息,以下是提取附件二进制数据的方法:
$mbox = imap_open( . . . . );
$IMAPobj = imap_check($inbox);
$start = $IMAPobj->Nmsgs-30;
$end = $IMAPobj->Nmsgs;
$result = imap_fetch_overview($inbox,"$start:$end",0);
$count = $end;
foreach ($result as $overview) {
$parts = mail_mime_to_array($inbox, $count);
foreach($parts as $part) {
if(@$part['filename'] || @$part['name'] ) {
$partName = $part['filename'] ? $part['filename'] : $part['name'];
echo "Attachment name is " . basename($partName);
echo "\n";
if(preg_match( . . . write here a regex to detect ".jpg" in $partName . . .)) {
echo "Found file! Extracting binary data...";
$fileContents = $part['data'];
file_put_contents("attachment.jpg", $fileContents);
}
}
}
}
谢谢,我试试看。