Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / mail() на mail.ru / 13 сообщений из 13, страница 1 из 1
13.02.2014, 00:28
    #38559197
djrevers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
На 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
13.02.2014, 00:49
    #38559206
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
на майл доходит. надо правильно заголовки прописать
например тут подсмотреть _http://www.softtime.ru/scripts/mailattach.php
...
Рейтинг: 0 / 0
13.02.2014, 00:55
    #38559210
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
djreversесли на русскомЕсли на русском, то с чего вдруг "charset=iso-8859-1" ставите? Это раз.
В полях Subject, To и в хидерах всю нелатиницу следует кодировать. Например, в base64. Это два.

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

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

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

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

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


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

Код: 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
13.02.2014, 13:10
    #38559719
djrevers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
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
13.02.2014, 14:13
    #38559830
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
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
13.02.2014, 14:16
    #38559840
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
boundary - граница между блоками информации
...
Рейтинг: 0 / 0
13.02.2014, 14:44
    #38559889
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
ILLHEAD, $EOL по rfc должен быть "\r\n"
...
Рейтинг: 0 / 0
13.02.2014, 14:53
    #38559900
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mail() на mail.ru
?,

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

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


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