PHPでメールを受信する方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:03:002036ブラウズ

php受信メールクラス

receivemail は、電子メールの受信に特別に使用される PHP クラスで、POP3 や IMAP などの電子メール プロトコルをサポートします。電子メールおよび電子メールの添付ファイルを受信できます。

中国語の文字化けの解決策

/**
 * decode the subject of chinese
 *
 * @param string $subject
 * @return sting
 */
public function subjectDecode($subject) {
	$beginStr = substr($subject, 0, 5);
	if($beginStr == '=?ISO') {
		$separator = '=?ISO-2022-JP';
		$toEncoding = 'ISO-2022-JP';
	} else  {
		$separator = '=?GB2312';
		$toEncoding = 'GB2312';
	}
	$encode = strstr($subject, $separator);
	if ($encode) {
		$explodeArr = explode($separator, $subject);
		$length = count($explodeArr);
		$subjectArr = array();
		for($i = 0; $i < $length / 2; $i++) {
			$subjectArr[$i][] = $explodeArr[$i * 2];
			if (@$explodeArr[$i * 2 + 1]) {
				$subjectArr[$i][] = $explodeArr[$i * 2 + 1];
			}
		}
		foreach ($subjectArr as $arr) {
			$subSubject = implode($separator, $arr);
			if (count($arr) == 1) {
				$subSubject = $separator . $subSubject;
			}
			$begin = strpos($subSubject, "=?");
			$end = strpos($subSubject, "?=");
			$beginStr = '';
			$endStr = '';
			if ($end > 0) {
				if ($begin > 0) {
					$beginStr = substr($subSubject, 0, $begin);
				}
				if ((strlen($subSubject) - $end) > 2) {
					$endStr = substr($subSubject, $end + 2, strlen($subSubject) - $end - 2);
				}
				$str = substr($subSubject, 0, $end - strlen($subSubject));
				$pos = strrpos($str, "?");
				$str = substr($str, $pos + 1, strlen($str) - $pos);
				$subSubject = $beginStr . imap_base64($str) . $endStr;
				$subSubjectArr[] = iconv ( $toEncoding, 'utf-8', $subSubject );
				// mb_convert_encoding($subSubject, 'utf-8' ,'gb2312,ISO-2022-JP');
			}
		}
		$subject = implode('', $subSubjectArr);
	}
	return $subject;
} 

if(strto lower($sender->mailbox)!='mailer-daemon' && strto lower($sender->mailbox)!='postmaster')
{ $subject = $this->subjectDecode($mail_header->subject);

使用方法:

<?php
include("receivemail.class.php");
// 创建一个 reciveMail 对象
$obj = new receiveMail('469671292@163.com','*','469671292@163.com','pop.163.com','pop3','110',false);
// 连接到邮件服务器
$obj->connect();         //If connection fails give error message and exit
// 读取全部信件
$tot = $obj->getTotalMails(); //Total Mails in Inbox Return integer value

echo "收到$tot封邮件::<br>";
for($i = $tot; $i > 0; $i--)
{
	$head = $obj->getHeaders($i);  // 读取获取邮件头信息,返回数组 **数组键值为 (subject,to,toOth,toNameOth,from,fromName)
	echo "主题 :: ".$head['subject']."<br>";
	echo "收件人 :: ".$head['to']."<br>";
	echo "抄送 :: ".$head['toOth']."<br>";
	echo "发件人 :: ".$head['from']."<br>";
	echo "发件人名称 :: ".$head['fromName']."<br>";
	echo "<br><br>";
	echo "<br>*******************************************************************************************<br>";
	echo $obj->getBody($i);  // 邮件正文
	$str = $obj->GetAttach($i,"./"); // 获取邮件附件,返回的文件名以逗号隔开。 例如. (mailid, Path to store file)
	$ar = explode(",",$str);
	foreach($ar as $key=>$value)
		echo ($value == "") ? "" : "Atteched File :: " . $value . "<br>";
	echo "<br>------------------------------------------------------<br>";
	//$obj->deleteMails($i); // Delete Mail from Mail box
}
$obj->close_mailbox();   //Close Mail Box
?>

?receivemail.class.php では imap モジュールのサポートが必要です。

<?php
$imap = imap_open("{localhost}mbox-bak","graeme","inferno");

// get recent messages
$number = imap_num_recent($imap);

echo "Number of recent messages: $number<BR>\n";
// display subjects of messages
for ($i=1; $i<=$number; $i++) {
   $header = imap_header($imap, $i);
   echo "Subject: ", $header->Subject, "<BR>\n";

}
imap_close($imap);
?>

imap_append: ?? ?指定されたメールボックスに文字列を追加します。
imap_base64: ?? Base64 エンコードをデコードします。
imap_body: ?? 手紙の本文を読んでください。
imap_check: ?? 電子メール情報を返します。
imap_close: ?? imap リンクを閉じます。
imap_createmailbox: ?? 新しいメールボックスを作成します。
imap_delete: ?? 電子メールを削除対象としてマークします。
imap_deletemailbox: ?? ?既存のメールボックスを削除します。
imap_expunge: ?? ?フラグ付きメッセージを削除します。
imap_fetchbody: ?? ?メッセージ本文から指定された部分を取得します。
imap_fetchstruct: ?? ?レターの構造情報を取得します。
imap_header: ?? レターのヘッダー情報を取得します。
imap_headers: ?? すべての文字のヘッダー情報を取得します。
imap_listmailbox: ?? メールボックスのリストを取得します。
imap_listsubscribed: ?? ?サブスクリプション電子メール リストを取得します。
imap_mail_copy: ?? ?指定されたメールを別のメールボックスにコピーします。
imap_mail_move: ?? ?指定されたメールを別のメールボックスに移動します。
imap_num_msg: ?? 文字数を取得します。
imap_num_recent: ?? ?新しい受信文字の数を取得します。

imap_open: ?? imap リンクを開きます。
imap_ping: ?? imap が接続されているかどうかを確認します。
imap_renamemailbox: ?? ?メールボックス名を変更します。
imap_reopen: ?? imap リンクを再度開きます。
imap_subscribe: ?? 購読メール。
imap_undelete : ?? ?メッセージマークの削除を取り消します。
imap_unsubscribe: ?? 電子メール アドレスの購読を解除します。
imap_qprint: ?? qp エンコーディングを 8 ビットに変換します。
imap_8bit: ?? ?8 ビットを qp エンコーディングに変換します。
imap_binary: ?? 8 ビットを Base64 エンコーディングに変換します。
imap_scanmailbox: ?? ?特定の文字列を含む文字を検索します。
imap_mailboxmsginfo: ?? 現在のメールボックス情報を取得します。
imap_rfc822_write_address : ?? 電子メール アドレスの正規化。
imap_rfc822_parse_adrlist : ?? 電子メール アドレスを解析します。
imap_setflag_full : ?? ?文字フラグを設定します。
imap_clearflag_full : ?? メッセージフラグをクリアします。
imap_sort : ?? メッセージヘッダーを並べ替えます。
imap_fetchheader: ?? 元のヘッダーを取得します。
imap_uid: ?? メッセージ uid を取得します。
imap_getmailboxes: ?? すべてのメールの詳細を取得します。
imap_gestbscribed: ?? すべてのサブスクリプション メールボックスを一覧表示します。
imap_msgno : ?? uid の連続する文字をリストします。
imap_search: ?? 指定した条件で文字を検索します。
imap_last_error: ?? ?最後のエラー メッセージ。
imap_errors: ?? すべてのエラー メッセージ。
imap_alerts: ?? すべての警告メッセージ。
imap_status: ?? 現在のステータス情報。

1階 hdnlove 2012-04-10
こんにちは、質問したいことがあります。メールの受信にreceivemailを使用していますが、毎回ロードが非常に遅い場合、データを取得するにはどうすればよいですか?解決策はありますか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。