encode UTF-8 characters in emails
This commit is contained in:
		
							parent
							
								
									6ecbf53b08
								
							
						
					
					
						commit
						2a1a4e57a6
					
				|  | @ -979,21 +979,8 @@ function sendPasswordMail($pwd, $user, $recipient = null) { | |||
| 		$body = str_replace('@@' . $attr . '@@', $value, $body); | ||||
| 		$found = preg_match('/\@\@[^\@]+\@\@/', $body, $results); | ||||
| 	} | ||||
| 	$headerLines = "X-Mailer: LDAP Account Manager\r\n"; | ||||
| 	if ($mailFrom != '') { | ||||
| 		$headerLines .= 'From: ' . $mailFrom . "\r\n"; | ||||
| 	} | ||||
| 	if ($mailReplyTo != '') { | ||||
| 		$headerLines .= 'Reply-To: ' . $mailReplyTo . "\r\n"; | ||||
| 	} | ||||
| 	$headerLines .= "MIME-Version: 1.0\r\n"; | ||||
| 	if ($mailIsHTML == 'true') { | ||||
| 		$headerLines .= "Content-type: text/html; charset=UTF-8\r\n"; | ||||
| 	} | ||||
| 	else { | ||||
| 		$headerLines .= "Content-type: text/plain; charset=UTF-8\r\n"; | ||||
| 	} | ||||
| 	$success = mail($mailTo, $subject, $body, $headerLines); | ||||
| 	$headerLines = createEMailHeaders($mailFrom, ($mailIsHTML == 'true'), $mailReplyTo); | ||||
| 	$success = mail($mailTo, base64EncodeForEMail($subject), $body, $headerLines); | ||||
| 	if ($success) { | ||||
| 		logNewMessage(LOG_DEBUG, 'Sent password mail to ' . $mailTo); | ||||
| 		return array( | ||||
|  | @ -1008,6 +995,47 @@ function sendPasswordMail($pwd, $user, $recipient = null) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Generates the email header text for the given parameters. | ||||
|  *  | ||||
|  * @param String $from FROM address | ||||
|  * @param boolean $isHTML mail is formatted as HTML or plain text | ||||
|  * @param String $replyTo reply-to address (optional) | ||||
|  */ | ||||
| function createEMailHeaders($from, $isHTML, $replyTo = null) { | ||||
| 	$headerLines = "X-Mailer: LDAP Account Manager\r\n"; | ||||
| 	if (!empty($from)) { | ||||
| 		if (preg_match('/^(.*)<(.*)>$/', $from, $matchesFrom)) { | ||||
| 			$from = base64EncodeForEMail($matchesFrom[1]) . ' <' . $matchesFrom[2] . '>'; | ||||
| 		} | ||||
| 		$headerLines .= 'From: ' . $from . "\r\n"; | ||||
| 	} | ||||
| 	if (!empty($replyTo)) { | ||||
| 		if (preg_match('/^(.*)<(.*)>$/', $replyTo, $matchesReplyTo)) { | ||||
| 			$replyTo = base64EncodeForEMail($matchesReplyTo[1]) . ' <' . $matchesReplyTo[2] . '>'; | ||||
| 		} | ||||
| 		$headerLines .= 'Reply-To: ' . $replyTo . "\r\n"; | ||||
| 	} | ||||
| 	$headerLines .= "MIME-Version: 1.0\r\n"; | ||||
| 	if ($isHTML) { | ||||
| 		$headerLines .= "Content-type: text/html; charset=UTF-8\r\n"; | ||||
| 	} | ||||
| 	else { | ||||
| 		$headerLines .= "Content-type: text/plain; charset=UTF-8\r\n"; | ||||
| 	} | ||||
| 	return $headerLines; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Returns a base64 encoded string of the given values in a fomat that is used in emails. | ||||
|  *  | ||||
|  * @param String $value value to encode | ||||
|  * @return String base64 encoded value | ||||
|  */ | ||||
| function base64EncodeForEMail($value) { | ||||
| 	return '=?UTF-8?B?' . base64_encode($value) . '?='; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Caches module objects. | ||||
|  * This improves performance if the same module does not need to be created multiple times (calling get_metaData() each time). | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue