download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

PHP, mail(), Windows-1251 - изпращане на mail на кирилица от форма в сайт

Автор
Съобщение
phrozencrew
Пон, 27.07.09, 16:17
От известно време се чудих как става тоя номер с пращането на писма от сайтове, които не са UTF-8, така, че при натискане на "ОТГОВОРИ" на мястото на Subject (ОТНОСНО) да не се появяват маймунки.
Мисля, че стигнах до решението. Малко по трудният път, защото така и не намерих обяснение как става номера. Най-просто скрипта за пращане на текстови съобщения представлява следното:
$subject = "Съобщение от сайта";
$encoded_subject="=?Windows-1251?B?".base64_encode($subject)."?=rn";
 
mail( "vashiat-mail@abv.bg",
$encoded_subject,
"Съобщение: ".$_POST['msg'],
'Content-type: text/plain; charset=windows-1251'."rn".
"From: ".$_POST['email']."rn".
'Reply-To: '.$_POST['еmail']."rn".
'MIME-Version: 1.0');
?>

Да обясним подробностите:
vashiat-mail@abv.bg - Пощата на която искате да се изпращат писмата
$_POST['msg'] - съдържание на съобщението
$_POST['email'] - пощата на посетителя на страницата, който ви е писал

Какво е особеното на този скрипт. Трябва да се знае, че subject трябва да е в base64 кодиране. Но трика тука е, че кирилицата в ANSI трябва да се посочи с символите =?Windows-1251?B? и след кодираното съобщение реда се завършва с ?=. До сега когато съм получвал писма от сайтове или са били без вкарване на енкодинг за събжекта или са били в UTF-8 кодиране - =?UTF-8?B?.
Тая идея ми дойде след като прегледах няколко съобщения от сайта на Download.bg, които си ползват Windows-1251! Мерси!

milen
Пон, 27.07.09, 17:03

RE: PHP, mail(), Windows-1251 - изпращане на mail на кирилица от форма в сайт

Пак заповядай
anonymous
Нед, 02.08.09, 19:07
Хииии, ти откри америка
Браво, учи се
phrozencrew
Нед, 02.08.09, 19:39

RE: PHP, mail(), Windows-1251 - изпращане на mail на кирилица от форма в сайт

” Хииии, ти откри америка
Браво, учи се
Благодаря, уча се!
А ти случайно да можеш да ме светнеш какво се добавя в хедъра за ти върне отговор, че писмото ти е било отворено?
танясекс
Нед, 02.08.09, 20:28
И той като мен не разбира , ама се обажда . Не му се връзвай
phrozencrew
Нед, 02.08.09, 21:25
Ами аз наистина си питам , защото не знам. Ако някой знае нека сподели.
milen
Нед, 02.08.09, 23:40
Ако добавиш:
Return-Receipt-To: myemail@maydomayn.com

получателя ще бъде питан дали да се изпрати обратна разписка към посочения е-мейл . Както се вижда, разписката може да бъде насочена към друго място.
 
Ако е важно да знаеш дали получателя е отворил писмото, сложи нещо от типа:
<img src="http://maydomayn.com/ac/line23456.gif" width=100% height=5>

в html частта на писмото. От друга страна чрез URL rewiting в htaccess файла указваш апача да изпълнява скрипт от вида:

http://maydomayn.com/ac/line.php?mailId=23456

Числото 23456 е id на е-мейла който изпращаш (записваш си ги в база). Ако получателя визуализира html частта - клиента му вероятно ще се опита да зареди имиджа и в твоята база ще се запише, че това писмо е отворено. (даже ще се запише точно кога е станало това). А иначе на изхода пращаш един безцветен гиф.
 
Комбинация от двата метода дава сведение за около 30-50% от отварянията на писмото при клиента. В другите случаи или потребителите не отварят писмото или ползват plain text за вюто на писмата и не връщат разписки или SPAM филтрите го филтрират.

редактиран от milen на 02.08.09 23:43
phrozencrew
Пон, 03.08.09, 00:47
milen, мерси пич!
Много полезна информация!

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.