[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите пжл разобраться
Гарыныч
Ниже привожу текст, который отправляется в виде мыла.
Outlock принимает всё идеально, даже когда отправляются файлы с русскими названиями. Но mail.ru почему-то упорно принимает прикреплённый файл как untitled.bin и, естественно, не понимает как его открывать...
А сколько ещё всяких почт вокруг, это же ужас.......

Умоляю, пока меня в психушку не увезли, подскажите, чего тут не хватает???


----54244e27d03d19c8becc008b981a244d
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: Quot-Printed
ИЪЭИЪЭИЪЭХГКХГКРТБТР итд.
----54244e27d03d19c8becc008b981a244d
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename = "Image2.gif" R0lGO итд.
----54244e27d03d19c8becc008b981a244d--



Спустя 8 минут, 56 секунд (28.03.2009 - 10:59) Guest написал(а):
Предвижувопросы о четвёртом параметре mail()...
Пожалста, вот он:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="--027e4 итд."
From: No replay <adr@esa.net>

Спустя 1 час, 10 минут, 46 секунд (28.03.2009 - 12:10) twin написал(а):
Вот класс с аттачем, это конечно не phpmailer, но основное там есть, и работает вроде везде. По крайней мере нареканий пока не было:
Свернутый текст
PHP
<?php
class Create_Mail
{
    private 
$C_Type "text/plain";
    private 
$Charset "utf-8";
    private 
$Bound NULL;    
    private 
$To NULL;
    private 
$Subj MAIL_SUPPORT;        
    private 
$Body NULL;
    private 
$Header NULL;
    private 
$Multipart NULL;    
    private 
$Rn "\r\n";    

        
    function 
Create_Mail() 
    {
        if(
substr(PHP_OS03) == "WIN")
        
$this->Rn "\n";
    
$this->Bound "--".md5(uniqid(time()));    
    }

    function 
TypeHTML($ct
    {
        if(
$ct == true)
            
$this->C_Type "text/html";        
    }
    
    function 
Carset_Win($cс
    {
        if(
$cс == true)
            
$this->Charset "windows-1251";                    
    }
        
    
    function 
ToMail($to
    {
$to str_replace(",","",$to);    
$to str_replace("Cc:","",$to);
$to str_replace("Bcc:","",$to);    
$this->To $to;

    }
        
    function 
SubMail($sb
    {
    
$this->Subj "=?".$this->Charset."?b?".base64_encode($sb)."?=";     
    }
                
    function 
AttachFile($path
    {
    
$fp fopen($path,"r");  
    
$file fread($fpfilesize($path));  
    
fclose($fp);
$this->File $file;
$this->Pach $path;    
    }

    function 
BodyMix($body,$from false
    {
$boundary "--".md5(uniqid(time()));
$headers "MIME-Version: 1.0;".$this->Rn;
$headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"".$this->Rn;

        if(
$from == false)
$headers .= "From: <".MAIL_SUPPORT."> ".$this->Rn;
        else
$headers .= "From: <".$from."> ".$this->Rn;

$this->Header $headers;   

$multipart .= "--".$boundary.$this->Rn
$multipart .= "Content-Type: ".$this->C_Type."; charset=".$this->Charset.$this->Rn;
$multipart .= "Content-Transfer-Encoding: Quot-Printed".$this->Rn.$this->Rn;
$multipart .= $body.$this->Rn.$this->Rn;
$message_part "--".$boundary.$this->Rn;  
$message_part .= "Content-Type: application/octet-stream".$this->Rn;  
$message_part .= "Content-Transfer-Encoding: base64".$this->Rn
$message_part .= "Content-Disposition: attachment; filename = \"".$this->Pach."\"".$this->Rn.$this->Rn;  
$message_part .= chunk_split(base64_encode($this->File)).$this->Rn;
$this->Body  $multipart.$message_part."--".$boundary.$this->Rn;;
    }
            
    function 
HeaderMail($from
    {
$headers "MIME-Version: 1.0;".$this->Rn;
$headers .= "Content-Type: ".$this->C_Type."; charset=".$this->Charset.$this->Rn;

        if(
$from == false)
$headers .= "From: <".MAIL_SUPPORT."> ".$this->Rn;
        else
$headers .= "From: <".$from."> ".$this->Rn;

$this->Header $headers;   
    }
    
    function 
SendMail() 
    {    
        if(
$this->Body && $this->To
            if(!
mail($this->To$this->Subj$this->Body$this->Header))   
            return 
false
            else 
             return 
true;
        else  
        return 
false;
    }     
    
}
# E-mail администратора
define('MAIL_SUPPORT','support@mysite.ru');
if(isset(
$_POST['ok']))
{
$to = isset($_POST['to'])?$_POST['to']:NULL;
$message = isset($_POST['message'])?$_POST['message']:NULL;
# Вызывается так:
$mail = new Create_Mail();
# Тип письма HTML - true, если текст, то не нужно этот метод
$mail -> TypeHTML(true);
# Кодировка. Windows-1251 - true Чесно скажу, под виндой не тестил
$mail -> Carset_Win(true);
# Кому
$mail -> ToMail($to);
# Тема
$mail -> SubMail($sb);
# Файл (путь до файла)
//$mail -> AttachFile($path);
# Сообщение, обратный адрес.
$mail -> BodyMix($message$from);
# Отправка
if($mail -> SendMail())
echo 
"Ура!";
}

?>
<form action="" method="post">
<input name="to" type="text" /><br />
<textarea name="message" cols="40" rows="10"></textarea><br />
<input name="ok" type="submit" />
</form>

Спустя 1 час, 28 минут, 36 секунд (28.03.2009 - 13:39) Guest написал(а):
Спасибо) всё очень красиво))
Только до сих пор я обходился без классов и понятия не имею как их готовить...

Из того что я понял, на выходе вроде должно получиться то же самое.

Попробую конечно разобраться, но неужели нельзя простыми функциями обойтись? Весь приведённый в вопросе текст легко делается без всяких классов, не хватает наверняка какой-то клопиной мелочи...

Кстати если инфу не перекодировать в koi8-r, mail.ru всё получает почеловечески, а Outlock ероглифами) Вот надо ж было кому-то все эти кодировки изобретать))

Спустя 1 час, 10 минут, 52 секунды (28.03.2009 - 14:49) Guest написал(а):
Попробовал)
При замене Carset_Win() на Carset_Koi8() появился вменяемый текст))
Аттач при всех пробных отправках как был,так и остался untitled.bin :-)

Таки заберут меня сегодня в кащенко))

Спустя 3 часа, 8 минут, 13 секунд (28.03.2009 - 17:58) twin написал(а):
Ну вообще то это не совсем класс, скорее набор функций. Под виндой действительно работать не будет, нфдо кой чего изменить. А под utf-8 все на ура. Я ни как не пойму, чего вы так фанатично цепляетесь к этим кои и вин... Ну утф - ясно ведь даже из названия - УНИВЕРСАЛЬНАЯ кодировка... Ну, мучайтесь дальше, покуда не дойдет, что все эти местячковые кодировки от лукавого.

Спустя 36 минут, 59 секунд (28.03.2009 - 18:35) Bezdna написал(а):
Цитата (twin @ 28.03.2009 - 14:58)
Ну, мучайтесь дальше, покуда не дойдет, что все эти местячковые кодировки от лукавого.


Золотые слова.

Спустя 1 месяц, 16 дней, 1 час, 52 минуты, 31 секунда (14.05.2009 - 19:27) Guest написал(а):
В приложении, на mail ru приходит файл Untitled.bin, какего раскодировать????? Помогите бьюсь второй час

Спустя 6 дней, 18 часов, 8 минут, 34 секунды (21.05.2009 - 13:36) Аня написал(а):
Скрипт замечательный, давно искала! Но вот тема приходит вопросами ?????? Что делать? iconv('UTF8','CP1251','текст темы на русском'); не помогло... dry.gif

Спустя 3 часа, 42 минуты, 10 секунд (21.05.2009 - 17:18) twin написал(а):
К сожалению не могу сказать. У меня этот скрипт работает со всеми серверами. Может тема берется из файла не той кодировки...

Спустя 17 часов, 51 минута, 58 секунд (22.05.2009 - 11:10) Guest написал(а):
Врят ли... в в прикреплённом файле txt таже переменная с темой берётся и всё нормально! Может в этом скрипте тема (SubMail) под windows-1251 не попадает и идёт своей кодировкой utf-8? Там вроде так и прописано причём жестко! Попробую изменить... должно помоч... wacko.gif

Спустя 10 минут, 8 секунд (22.05.2009 - 11:20) Аня написал(а):
Да помогло! Вот здесь кодировочку нуно прописать:
$this->Subj = "=?utf-8?b?".base64_encode($sb)."?=";
так:
$this->Subj = "=?windows-1251?b?".base64_encode($sb)."?=";
И ещё здесь имя тоже нуно менять в самом скрипте, иногда не подставляется
$headers .= "From: <".MAIL_SUPPORT."> ".$this->Rn;

Спустя 58 минут, 46 секунд (22.05.2009 - 12:19) twin написал(а):
Нудык я же и гворю - не тестил под виндами.
(бурча под нос)
Чего вы к ней все прицепились, все равно скоро все на utf-8 перейдут, придется всё переделывать...

Поправил, пробуйте, кому еще неймется. Я не буду тестить под windows-1251, смысла не вижу.

Спустя 3 месяца, 8 часов, 22 минуты, 29 секунд (22.08.2009 - 20:41) Guest написал(а):
Для кооректного отображениея в поле "Тема" любой почтовой программы нужно прописать $header вот так:
$subject="Сообщение";
$header="Content-type: text/plain; charset=\"windows-1251\"";
$header.="Subject: $subject";
$header.="Content-type: text/plain; charset=\"windows-1251\"";
$mes="$from $email $msg";
mail($to, $subject,$mes,$header)
Нигде не могу найти, как после отправки почты исключить появление пустого окна или, как возвратить на страницу отправки без гиперссылки!!!!

Спустя 2 дня, 15 часов, 29 минут, 33 секунды (25.08.2009 - 12:11) live Uucyc написал(а):
В чем может быть проблема???

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\сайт\mail.php on line 181

вот код отправки
PHP
$headers = "Content-type:text/plain;Charset=utf-8\r\n";
                $headers .= "From: mail одмина \r\n";
                $sabject = "тема";
                $message = "сообщение";
                mail($mail,$sabject,$message,$headers);

Спустя 1 час, 26 минут, 9 секунд (25.08.2009 - 13:37) Teach написал(а):
Цитата
В чем может быть проблема???

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\сайт\mail.php on line 181

У меня таже проблема! Причем на хостинге сообщение отправляется!
Я десять раз проверял настройку связки Apache+PHP на моем компе,но Apache не видит настройки php.ini. Подскажите в чем дело?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.