Bug fixed where mails where nearly empty. HTML mails can now be received.
This commit is contained in:
		| @@ -85,14 +85,27 @@ function email_get_msg($mbox,$uid) { | |||||||
| 	// file_put_contents($file, json_encode($struc)); | 	// file_put_contents($file, json_encode($struc)); | ||||||
|  |  | ||||||
| 	if(! $struc->parts) { | 	if(! $struc->parts) { | ||||||
| 		$ret['body'] = email_get_part($mbox,$uid,$struc,0); | 		$ret['body'] = email_get_part($mbox,$uid,$struc,0, 'html'); | ||||||
|  |  | ||||||
|  | 		if (trim($ret['body']) == '') | ||||||
|  | 			$ret['body'] = email_get_part($mbox,$uid,$struc,0, 'plain'); | ||||||
|  | 		else | ||||||
|  | 			$ret['body'] = html2bbcode($ret['body']); | ||||||
| 	} | 	} | ||||||
| 	else { | 	else { | ||||||
|  | 		$text = ''; | ||||||
|  | 		$html = ''; | ||||||
| 		foreach($struc->parts as $ptop => $p) { | 		foreach($struc->parts as $ptop => $p) { | ||||||
| 			$x = email_get_part($mbox,$uid,$p,$ptop + 1); | 			$x = email_get_part($mbox,$uid,$p,$ptop + 1, 'plain'); | ||||||
| 			if($x) | 			if($x)	$text .= $x; | ||||||
| 				$ret['body'] = $x; |  | ||||||
|  | 			$x = email_get_part($mbox,$uid,$p,$ptop + 1, 'html'); | ||||||
|  | 			if($x)	$html .= $x; | ||||||
| 		} | 		} | ||||||
|  | 		if (trim($html) != '') | ||||||
|  | 			$ret['body'] = html2bbcode($html); | ||||||
|  | 		else | ||||||
|  | 			$ret['body'] = $text; | ||||||
| 	} | 	} | ||||||
| 	return $ret; | 	return $ret; | ||||||
| } | } | ||||||
| @@ -100,11 +113,11 @@ function email_get_msg($mbox,$uid) { | |||||||
| // At the moment - only return plain/text. | // At the moment - only return plain/text. | ||||||
| // Later we'll repackage inline images as data url's and make the HTML safe | // Later we'll repackage inline images as data url's and make the HTML safe | ||||||
|  |  | ||||||
| function email_get_part($mbox,$uid,$p,$partno) { | function email_get_part($mbox,$uid,$p,$partno, $subtype) { | ||||||
| 	// $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple | 	// $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple | ||||||
| 	global $htmlmsg,$plainmsg,$charset,$attachments; | 	global $htmlmsg,$plainmsg,$charset,$attachments; | ||||||
|  |  | ||||||
| 	//echo $partno; | 	//echo $partno."\n"; | ||||||
|  |  | ||||||
| 	// DECODE DATA | 	// DECODE DATA | ||||||
| 	$data = ($partno) | 	$data = ($partno) | ||||||
| @@ -127,7 +140,7 @@ function email_get_part($mbox,$uid,$p,$partno) { | |||||||
| 	if ($p->parameters) | 	if ($p->parameters) | ||||||
| 		foreach ($p->parameters as $x) | 		foreach ($p->parameters as $x) | ||||||
| 			$params[strtolower($x->attribute)] = $x->value; | 			$params[strtolower($x->attribute)] = $x->value; | ||||||
|     if ($p->dparameters) | 	if (isset($p->dparameters) and $p->dparameters) | ||||||
| 		foreach ($p->dparameters as $x) | 		foreach ($p->dparameters as $x) | ||||||
| 			$params[strtolower($x->attribute)] = $x->value; | 			$params[strtolower($x->attribute)] = $x->value; | ||||||
|  |  | ||||||
| @@ -135,7 +148,7 @@ function email_get_part($mbox,$uid,$p,$partno) { | |||||||
| 	// Any part with a filename is an attachment, | 	// Any part with a filename is an attachment, | ||||||
| 	// so an attached text file (type 0) is not mistaken as the message. | 	// so an attached text file (type 0) is not mistaken as the message. | ||||||
|  |  | ||||||
|     if ($params['filename'] || $params['name']) { | 	if ((isset($params['filename']) and $params['filename']) || (isset($params['name']) and $params['name'])) { | ||||||
| 		// filename may be given as 'Filename' or 'Name' or both | 		// filename may be given as 'Filename' or 'Name' or both | ||||||
| 		$filename = ($params['filename'])? $params['filename'] : $params['name']; | 		$filename = ($params['filename'])? $params['filename'] : $params['name']; | ||||||
| 		// filename may be encoded, so see imap_mime_header_decode() | 		// filename may be encoded, so see imap_mime_header_decode() | ||||||
| @@ -146,9 +159,10 @@ function email_get_part($mbox,$uid,$p,$partno) { | |||||||
| 	if ($p->type == 0 && $data) { | 	if ($p->type == 0 && $data) { | ||||||
| 		// Messages may be split in different parts because of inline attachments, | 		// Messages may be split in different parts because of inline attachments, | ||||||
| 		// so append parts together with blank row. | 		// so append parts together with blank row. | ||||||
|         if (strtolower($p->subtype)=='plain') | 		if (strtolower($p->subtype)==$subtype) { | ||||||
|  | 			$data = iconv($params['charset'], 'UTF-8//IGNORE', $data); | ||||||
| 			return (trim($data) ."\n\n"); | 			return (trim($data) ."\n\n"); | ||||||
|         else | 		} else | ||||||
| 			$data = ''; | 			$data = ''; | ||||||
|  |  | ||||||
|  //           $htmlmsg .= $data ."<br><br>"; |  //           $htmlmsg .= $data ."<br><br>"; | ||||||
| @@ -165,12 +179,14 @@ function email_get_part($mbox,$uid,$p,$partno) { | |||||||
| //	} | //	} | ||||||
|  |  | ||||||
| 	// SUBPART RECURSION | 	// SUBPART RECURSION | ||||||
|     if ($p->parts) { | 	if (isset($p->parts) and $p->parts) { | ||||||
|  | 		$x = ""; | ||||||
| 		foreach ($p->parts as $partno0=>$p2) { | 		foreach ($p->parts as $partno0=>$p2) { | ||||||
|             $x =  email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1));  // 1.2, 1.2.1, etc. | 			$x .=  email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1), $subtype);  // 1.2, 1.2.1, etc. | ||||||
| 			if($x) | 			//if($x) | ||||||
| 				return $x; | 			//	return $x; | ||||||
| 		} | 		} | ||||||
|  | 		return $x; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user