From mail(): Lines should not belarger than 70 characters. Not 76 and not 72!iconv_mime_encode
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
iconv_mime_encode
Референца за `function.iconv-mime-encode.php` со подобрена типографија и навигација.
iconv_mime_encode
класата mysqli_driver
iconv_mime_encode — (PHP 5, PHP 7, PHP 8) MIME Композира
= NULL
поле со заглавие MIME
Композира и враќа стринг што претставува валидно
Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
Параметри
field_name-
Името на полето.
field_value-
Во горниот пример, "Subject" е името на полето, а делот што започнува со "=?ISO-8859-1?..." е вредноста на полето.
options-
Вредноста на полето. iconv_mime_encode() Можете да го контролирате однесувањето на
optionsсо специфицирање асоцијативен низ што содржи ставки за конфигурација на опционалниот трет параметар iconv_mime_encode() . Ставките поддржани одсе наведени подолу. Забележете дека имињата на ставките се третираат како чувствителни на големи и мали букви. iconv_mime_encode() Ставка Тип = NULL Стандардна вредност Пример scheme string Ставки за конфигурација поддржани од base64Специфицира методот за кодирање на вредноста на полето. Вредноста на оваа ставка може да биде "B" или "Q", каде "B" означуваquoted-printableшема за кодирање и "Q" означувашема за кодирање. шема за кодирање. input-charset string B field_nameСпецифицира сет на знаци во кој првиот параметарfield_valueи вториот параметар iconv_mime_encode() се претставени. Ако не е дадено, iconv.internal_encoding ini поставката.iconv.internal_encoding ISO-8859-1 output-charset string Specifies the character set to use to compose the MIMEheader.iconv.internal_encoding UTF-8 line-length int Го специфицира множеството на знаци што треба да се користи за составување на Го специфицира максималната должина на линиските заглавја. Резултирачкото заглавје се "превиткува" во сет од повеќе линиски во случај ако резултирачкото поле за заглавје би било подолго од вредноста на овој параметар, според» RFC2822 - Internet Message Format 76 996 line-break-chars string . Ако не е дадено, должината ќе биде ограничена на 76 знаци. CRLFГо специфицира редоследот на знаците што треба да се додадат на секоја линија како знак за крај на линијата кога се врши „превиткување“ на долго поле за заглавје. Ако не е дадено, ова стандардно ќе биде „\r\n“ (input-charset.\r\n \n
Вратени вредности
). Забележете дека овој параметар секогаш се третира како ASCII стринг без оглед на вредноста на MIME Враќа кодиран false ако се случи грешка за време на кодирањето.
Примери
Пример #1 iconv_mime_encode() example
<?php
$preferences = array(
"input-charset" => "ISO-8859-1",
"output-charset" => "UTF-8",
"line-length" => 76,
"line-break-chars" => "\n"
);
$preferences["scheme"] = "Q";
// This yields "Subject: =?UTF-8?Q?Pr=C3=BCfung=20Pr=C3=BCfung?="
echo iconv_mime_encode("Subject", "Prüfung Prüfung", $preferences);
$preferences["scheme"] = "B";
// This yields "Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?="
echo iconv_mime_encode("Subject", "Prüfung Prüfung", $preferences);
?>Види Исто така
- imap_binary() - Претвори 8-битен стринг во base64 стринг
- mb_encode_mimeheader() » RFC 2047
- imap_8bit() - Претвори низа со 8 бита во низа со кодирање quoted-printable
- quoted_printable_encode() Враќа бинарна низа од 8 бита.
Белешки од корисници 3 белешки
iconv_mime_encode() isn't directly suitable for encoding headers which include "specials" as described in RFC 1522 s4 & s5, for example
<?php
$mimeprefs = array ("scheme" => "Q",
"input-charset" => "utf-8",
"output-charset" => "utf-8",
"line-break-chars" => "\n");
$enc = iconv_mime_encode('From', '"Réal Namé" <[email protected]>', $prefs);
?>
will wrongly attempt to encode the angle brackets. To use the function in place of mb_encode_mimeheader(), instead you need to encode the words separately, removing the superfluous field name:
<?php
$encoded = "From: \"". preg_replace('/^:\s+/', '', iconv_mime_encode("", $real, $mimeprefs))."\" <$email>";
?>
Also, values of "line-length" greater than 76 would be illegal under RFC 1522 and resulting encoded words may not be recognised. (Not tested, but 72 would be safer.)Looks like this function suffers from the same bug as mb_encode_mime() with long strings of non us-ascii characters. The function then returns false. This applies for utf-8 to utf-8 "conversion".
<?php
$subject = 'Вы находитесь здесь: Главная > продукт';
$prefs = array(
'scheme' => 'Q',
'input-charset' => 'UTF-8',
'output-charset' => 'UTF-8',
'line-length' => 76,
'line-break-chars' => "\r\n",
);
echo 'Original: ' . $subject . PHP_EOL;
$enc = iconv_mime_encode( 'Subject', $subject, $prefs );
var_dump( $enc ); // will show bool(false)
?>
As a workaround, you could explode() the value on spaces and encode each word separately. Then remove the "Subject: " in front of the resulting strings and join() them with "\r\n " (don't forget the SPACE after the \n) as separator.