LINUX.ORG.RU

Отправка почты через php

 , ,


1

1

Привет все. Такая сиуация. есть VPS, на нем поднят apache2, php5. Пытаюсь отправить почту.

<?php
$subject = "Тестовое сообщение";
$message = "Текст сообщения";
$headers = "From: macik1@name.com";
mail( "macik2@name.com", $subject, $message, $headers);
?>
сам скрипт UTF-8, письмом приходит в таком виде: http://cl.ly/L4YS исходный код:
Return-Path: <www-data@host1.ua>
Delivered-To: macik1@local.com
Received: from localhost (localhost [127.0.0.1])
	by mail.local.com (Postfix) with ESMTP id B1793183A46
	for <macik1@local.com>; Fri, 23 Nov 2012 16:38:00 +0200 (EET)
Received: from mail.local.com ([127.0.0.1])
	by localhost (mail.local.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id hxHG4gorZJCr for <macik1@local.com>;
	Fri, 23 Nov 2012 16:38:00 +0200 (EET)
Received: by mail.local.com (Postfix, from userid 5000)
	id 97C36183A47; Fri, 23 Nov 2012 16:38:00 +0200 (EET)
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.local.com
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham
	version=3.3.1
Received: from host1.ua (host1.ua [78.47.178.205])
	by mail.local.com (Postfix) with ESMTPS id 9B798183A46
	for <macik1@local.com>; Fri, 23 Nov 2012 16:37:55 +0200 (EET)
Received: from host1.ua (localhost [127.0.0.1])
	by host1.ua (8.14.4/8.14.4/Debian-2ubuntu2) with ESMTP id qANEXova023753
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
	for <macik1@local.com>; Fri, 23 Nov 2012 16:33:50 +0200
Received: (from www-data@localhost)
	by host1.ua (8.14.4/8.14.4/Submit) id qANEXoAK023752;
	Fri, 23 Nov 2012 16:33:50 +0200
Date: Fri, 23 Nov 2012 16:33:50 +0200
Message-Id: <201211231433.qANEXoAK023752@host1.ua>
To: macik1@local.com
Subject: =?UTF-8?B?w5DCosOQwrXDkcKBw5HCgsOQwr7DkMKyw5A=?=
 =?UTF-8?B?wr7DkMK1IMORwoHDkMK+w5DCvsOQwrHDkcKJw5DCtcOQwr3DkMK4w5DCtQ==?=
X-PHP-Originating-Script: 0:php.php
From: macik1@local.com
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64

w5DCosOQwrXDkMK6w5HCgcORwoIgw5HCgcOQwr7DkMK+w5DCscORwonDkMK1w5DCvcOQwrjDkcKP

Помогите как исправить, наверно надо что то настроить в php и apache?!



Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от macik

Я больше склоне думать что система два раза кодировала файл и причем скорее всего не только в base64

может и так.

Тот же скрипт работал правильно на других системах.

это который в первом посте? УМВР.

drBatty ★★
()
Ответ на: комментарий от macik

зря старый php.ini не сохранил и жаль я тему поздно увидел.

Скорее всего проблема была в:
http://www.php.net/manual/ru/function.mb-send-mail.php

спроси у хостера, не позаботились ли они о тебе лишний раз и не врубили ли mbstring.func_overload случайно в & 1 ?


P.S.: что касается заголовка, то он по RFC должен передаваться в mail уже кодированным:
$this->subject = «=?utf-8?b?».base64_encode($this->subject)."?=";

иначе будут кракозябры. UTF-8 в сабже не работает.

BaBL ★★★★★
()

Для того, чтобы почтовый клиент знал, в какой кодировке пришло письмо, надо указать его в заголовках:
Content-type: <тип письма>; charset=<кодировка>
тип письма: text/plain или text/html
с кодировкой, я думаю, понятно.

Но! Даже если вы указали кодировку письма в заголовках, то этот приём не работает для темы письма, имени отправителя или получателя, названий вложенных файлов. Для указания кодировки темы письма и прочих вышеперечисленных полей необходимо использовать следующую конструкцию:
=?<кодировка>?B?<текст в base64>?=

Поскольку кодировка php (обычно это utf-8) и кодировка писем часто отличаются, то эти поля ещё надо перекодировать с помощью iconv.

http://konservs.com/post/отправка-почты-используя-php-mail-15

vpupkin97
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.