Unix HOWTOs and Tips Short unix command line administration tips and scripts

4Oct/120

Как да изпращаме HTML писма на кирилица, чрез PHP

Ако желаете да изпращате писма съдържащи кирилица, и форматиращи тагове, от PHP скрипт, можете да използвате следната функция:

function email_html($target, $sender, $subject, $htmlbody){
  $headers  = "MIME-Version: 1.0\r\n";
  $headers .= "From: {$sender}\r\n";
  $headers .= "Reply-To: {$sender}\r\n";
  $headers .= "Return-Path: {$sender}\r\n";
  $headers .= "Content-Type: text/html; charset=UTF-8; format=flowed\r\n";
  $headers .= "Content-Transfer-Encoding: base64 \r\n";
  $headers .= "X-Mailer: PHP/" . phpversion();

  $html = '<'.'!DOCTYPE'.' HTML>'.'<'.'head><'.'meta http-equiv="Content-Type" content="text/html; charset=utf-8">'.$htmlbody.'<'.'/body'.'><'.'/html>';
  $message = chunk_split(base64_encode($html));
  $subject = '=?UTF-8?B?'.base64_encode($subject).'?=';

  return @mail($target, $subject, $message, $headers);
}

Употребата и е проста (приемаме, че ще изпращаме писма с UTF-8 кодировка, съответно php скрипта ни или данните ни от базата също трябва да са в нея ... ):

$target = "targetmail@example.com";
$sender = "spammer@spammerhouse.com";
$subject = "Важно : това заглавие съдържа кирилица, но ще се покаже коректно в gmail.com и abv.bg";
$htmlbody = "Начало на тялото на съобщението....

Това е заглавен ред

А това е наклонен текст."; email_html($target, $sender, $subject, $htmlbody);
Filed under: Uncategorized No Comments