mailservice: use a custom html2text callback for plain text emails
The current `html2text` function from the PHPMailer library strips all html tags and only keeps the inner html. In the case of <a> tags we need to share the `href` attribute to the user when he reads his mail in plain text format. Fixes #419
This commit is contained in:
parent
7b0e42bec4
commit
a51ee59d1c
@ -69,7 +69,9 @@ class MailService {
|
|||||||
$body = $body . ' <br/><br/>' . __('Mail', 'Thank you for your trust.') . ' <br/>' . NOMAPPLICATION . ' <hr/>' . __('Mail', "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org");
|
$body = $body . ' <br/><br/>' . __('Mail', 'Thank you for your trust.') . ' <br/>' . NOMAPPLICATION . ' <hr/>' . __('Mail', "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org");
|
||||||
$mail->isHTML(true);
|
$mail->isHTML(true);
|
||||||
$mail->CharSet = PHPMailer::CHARSET_UTF8;
|
$mail->CharSet = PHPMailer::CHARSET_UTF8;
|
||||||
$mail->msgHTML($body, ROOT_DIR, true);
|
$mail->msgHTML($body, ROOT_DIR, function ($html) use ($mail) {
|
||||||
|
return $this->html2text($mail, $html);
|
||||||
|
});
|
||||||
|
|
||||||
// Build headers
|
// Build headers
|
||||||
$mail->addCustomHeader('Auto-Submitted', 'auto-generated');
|
$mail->addCustomHeader('Auto-Submitted', 'auto-generated');
|
||||||
@ -124,4 +126,16 @@ class MailService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom "advanced" callback to pass to msgHTML function
|
||||||
|
*
|
||||||
|
* @param PHPMailer $mailer a PHPMailer instance
|
||||||
|
* @param string $html the HTML body of an email
|
||||||
|
*/
|
||||||
|
private function html2text(PHPMailer $mailer, $html) {
|
||||||
|
$html = preg_replace('/<a[^>]*href="([^"]+)"[^>]*>(.*?)<\/a>/si', '${2}: ${1}', $html);
|
||||||
|
|
||||||
|
return $mailer->html2text($html);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user