powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / mail() на mail.ru
13 сообщений из 13, страница 1 из 1
mail() на mail.ru
    #38559197
djrevers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На gmail доходит прекрасно, а на mail.ru доходит только если тема и текст сообщения написаны на английском, если на русском то не доходят.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<body>
<?PHP
$to=""; 
$subject=""; 
$body=""; 
$headers="";
if(isset($_POST['submit'])) {
$to=$_POST['eto']; // Адрес получателя
if(isset($_POST['subj'])) {
$subject=$_POST['subj'];
}
if(isset($_POST['txt'])) {
$body=$_POST['txt']; // можно и HTML
}
if(isset($_POST['efrom'])) {
$from=$_POST['efrom'];
}
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: " . $from;
 
if (mail($to, $subject, $body, $headers))
{
echo "Ваше письмо отправлено " . $to . $subject . $body . $headers . " ";
}
else
{
echo "Ошибка отправки сообшения";
}
}
?>
<form action="ml.php" method="post">
<label>От кого:</label><br>
<input type="email" name="efrom">
<br><br>
<label>Кому:</label><br>
<input type="email" name="eto">
<br><br>
<label>Тема:</label><br>
<input type="text" name="subj">
<br><br>
<label>Текст:</label><br>
<textarea name="txt" cols="100" rows="20"></textarea>
<br><br>
<input type="submit" name="submit" value="Отправить">
</form>
</body>
</html>
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559206
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на майл доходит. надо правильно заголовки прописать
например тут подсмотреть _http://www.softtime.ru/scripts/mailattach.php
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559210
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
djreversесли на русскомЕсли на русском, то с чего вдруг "charset=iso-8859-1" ставите? Это раз.
В полях Subject, To и в хидерах всю нелатиницу следует кодировать. Например, в base64. Это два.

djrevers
Код: php
1.
$_POST['txt']; // можно и HTML

Ну как-нибудь уж определитесь, что Вы хотите отправлять - простой текст или хтмл. Таки совершенно разные правила оформления. Ваш код не соответствует ни тому, ни другому варианту.

RFC почитайте, там все написано. Но очень уж муторно. Если очень лениво - посмотрите как оформляются "правильные" письма и сделайте так же.

djreversне доходятВ спам загляните, туда наверно падают.

PS: чтоб не изобретать велосипед, можете использовать готовый класс для отправки почты.
PPS: дырищу для спам-рассылок прикрыть не забудьте :-)
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559234
djrevers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы. Отправлять хочу ХТМЛ. Как правильно использовать кодировать base64 или где можно посмотреть авторкак оформляются "правильные" письма?
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559236
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
djreversКак правильно использовать кодировать base64Смотрите в мануале , там есть примеры. Кроме того, там же есть куча ссылок на RFC.


djreversили где можно посмотреть авторкак оформляются "правильные" письма?В любой почтовой программе, которая умеет показывать "свойства письма".
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559252
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например такое работает

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	$EOL = "\n";
	$boundary  = "--".md5(uniqid(time()));

	$headers    = "MIME-Version: 1.0$EOL";
	$headers   .= "From: ". $from ."$EOL";
	$headers   .= "Content-Type: multipart/mixed; charset=utf-8; boundary=\"$boundary\"$EOL";

	$multipart  = "--$boundary$EOL";
	$multipart .= "Content-Type: text/html; charset=utf-8$EOL";
	$multipart .= "Content-Transfer-Encoding: base64$EOL";
	$multipart .= $EOL; // раздел между заголовками и телом html-части
	$multipart .= chunk_split(base64_encode($html));


	mail($mail_to, '=?utf-8?B?'.base64_encode($subject).'?=', $multipart, $headers);
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559719
djrevers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ILLHEADнапример такое работает

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	$EOL = "\n";
	$boundary  = "--".md5(uniqid(time()));

	$headers    = "MIME-Version: 1.0$EOL";
	$headers   .= "From: ". $from ."$EOL";
	$headers   .= "Content-Type: multipart/mixed; charset=utf-8; boundary=\"$boundary\"$EOL";

	$multipart  = "--$boundary$EOL";
	$multipart .= "Content-Type: text/html; charset=utf-8$EOL";
	$multipart .= "Content-Transfer-Encoding: base64$EOL";
	$multipart .= $EOL; // раздел между заголовками и телом html-части
	$multipart .= chunk_split(base64_encode($html));


	mail($mail_to, '=?utf-8?B?'.base64_encode($subject).'?=', $multipart, $headers);



РАБОТАЕТ!!! Спасибо!

Есть только несколько вопросов, на будущее:
для чего нужно это $boundary = "--".md5(uniqid(time())); ?
Так же интересно почему мы указываем кодировку и $headers и в $multipart и '=?utf-8?B?' перед $subject? Где можно по этому поводу почитать?
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559830
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
djrevers,

даже не так ) а так:

Код: php
1.
2.
3.
4.
5.
6.
...
	$multipart .= chunk_split(base64_encode($html));

	$multipart .= "$EOL--$boundary--$EOL";

	return mail($mail_to, '=?utf-8?B?'.base64_encode($subject).'?=', $multipart, $headers);
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559840
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boundary - граница между блоками информации
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559889
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
ILLHEAD, $EOL по rfc должен быть "\r\n"
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559900
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?,

вроде новая строка . сейчас не найду, по памяти
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38559910
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ILLHEAD?,

вроде новая строка . сейчас не найду, по памятисорри. вы правы
...
Рейтинг: 0 / 0
mail() на mail.ru
    #38560057
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
djreversТак же интересно почему мы указываем кодировку и $headers и в $multipart и '=?utf-8?B?' перед $subject? Где можно по этому поводу почитать? Тынц , тынц и другие RFC определяют правила построения письма.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / mail() на mail.ru
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]