Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Бинарный аттачмент к письму в скрипте

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Alexey666



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как скриптом (Perl, PHP - не суть) приатачить бинарный файл к отправляемому письму.
*.txt, *.htm и т.п. приаттачить - нет проблем, а вот с бинарных трабл
 
Если можно, то поностью пример кода для отправки такого письма
 
Добавлено
Неужели никто не знает, как это делается?!
Я думал, что я один такой

Всего записей: 13 | Зарегистр. 10-01-2002 | Отправлено: 14:18 05-02-2002 | Исправлено: Alexey666, 14:20 05-02-2002
quamque



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
<?
 
class mime_mail {
    var $parts;
    var $to;
    var $from;
    var $headers;
    var $subject;  
    var $body;
     
    /*    
    *    void mime_mail()
    *    class constructor
    */
     
    function mime_mail() {
        $this->parts = array();
        $this->to = "";
        $this->from = "";
        $this->subject = "";
        $this->body = "";
        $this->headers = "";
        }
         
    /*      
    *    void add_attachment(string message, [string name], [string ctype])
    *    Add an attachment to the mail object
    */
     
    function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
        $this->parts[] = array (
            "ctype" => $ctype,
            "message" => $message,
            "encode" => $encode,  
            "name" => $name
            );
        }
         
    /*
    *     void build_message(array part=
    *    Build message parts of a multipart mail
    */
     
    function build_message($part) {
        $message = $part["message"];
        $message = chunk_split(base64_encode($message));
        $encoding = "base64";
        return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
        }
         
    /*
    *    void build_multipart()
    *    Build a multipart mail
    */
     
    function build_multipart() {
        $boundary = "b".md5(uniqid(time()));
        $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
 
        for($i=sizeof($this->parts)-1; $i>=0; $i--) {
            $multipart .= "\n".$this->build_message($this->parts[$i])."--$boundary";
            }
             
        return $multipart .= "--\n";
        }
         
    /*
    *    string get_mail()
    *    returns the constructed mail
    */
     
    function get_mail($complete = true) {
        $mime = "";
        if (!empty($this->from))
            $mime .= "From: ".$this->from."\n";
        if (!empty($this->headers))
            $mime .= $this->headers."\n";
             
        if ($complete) {
            if (!empty($this->to))
                $mime .= "To: ".$this->to."\n";
            if (!empty($this->subject))  
                $mime .= "Subject: ".$this->subject."\n";
            }
             
        if (!empty($this->body))
            $this->add_attachment($this->body, "", "text/plain");
             
        $mime .= "MIME-Version: 1.0\n".$this->build_multipart();
        return $mime;
        }
         
    /*
    *    void send()
    *    Send the mail (last class-function to be called)
    */
     
    function send() {
        $mime = $this->get_mail(false);
        mail($this->to, $this->subject, "", $mime);
        }
         
    }; // end of class
 
//Теперь отправка письма с аттачментом
 
$fd = fopen($filename, "r");
$data = fread($fd, filesize($filename));
fclose($fd);
 
$mail = new mime_mail;
$mail->from     = "my@email";
$mail->to     = "your@email";
$mail->subject     = "Email Subject";
$mail->body     = "The body of the email would go here and can span multiple lines.";
 
$mail->add_attachment($data, $filename, $content_type);
$mail->send();
 
 
 
 
?>

Всего записей: 227 | Зарегистр. 19-12-2001 | Отправлено: 18:17 05-02-2002
Alexey666



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Буду пробовать ... Спасибо.

Всего записей: 13 | Зарегистр. 10-01-2002 | Отправлено: 18:26 05-02-2002
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а куда вводить имя аттача?
 
$fd = fopen($filename, "r");  
$data = fread($fd, filesize($filename));  
fclose($fd);  
 
$mail = new mime_mail;  
$mail->from     = "my@email";  
$mail->to     = "your@email";  
$mail->subject     = "Email Subject";  
$mail->body     = "The body of the email would go here and can span multiple lines.";  
 
$mail->add_attachment($data, $filename, $content_type);  
$mail->send();  
 

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 08:08 15-09-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pav4

Цитата:
а куда вводить имя аттача?

хочется ругнуться, да сил уже нет..
выше же все написано, что содержимое нужно прочитать в переменную $data
а имя файла будет в $filename

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 08:11 15-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вобщем добавил я строчку  
$filename = "name.txt"
$fd = fopen($filename, "r");  
$data = fread($fd, filesize($filename));  
fclose($fd);  
   
$mail = new mime_mail;  
$mail->from     = "my@email";  
$mail->to     = "your@email";  
$mail->subject     = "Email Subject";  
$mail->body     = "The body of the email would go here and can span multiple lines.";  
   
$mail->add_attachment($data, $filename, $content_type);  
$mail->send();  
 
но всеравно неработает (неругайте чайника)
что ещё добавить?

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 11:05 15-09-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
pav4
Не работает ЧТО?
компьютер выключается, сервер падает, что не работает?


----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 13:19 15-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Brodyaga
письмо с аттачем не приходит

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 13:30 15-09-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
На чем тестируем?
Куда отправляем?

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 15:52 15-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тестируем на хостинге отправляем себе на мыло

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 16:40 15-09-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Тогда полный код скрипта, если есть подавление ошибок-убрать, если вылезли ошибки-показать, использовать другой мэйл, с отключенным спам фильтром.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 17:06 15-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
полный код скрипта написан выше я лиш добавил
$filename="name.txt"
и вписал адреса получателя и отправителя, ошибка следующая:
 
Parse error: syntax error, unexpected T_VARIABLE in /www/pav4/htdocs/attach1.php on line 109

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 17:13 15-09-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pav4

Цитата:
Parse error: syntax error, unexpected T_VARIABLE in /www/pav4/htdocs/attach1.php on line 109  

что на 109 строке?? ну не детский сад же..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:43 15-09-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
нужно добавить НЕ

Код:
 
$filename="name.txt"  
 

а

Код:
 
$filename="name.txt";  
 

С точкой с запятой на конце.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 19:49 15-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
теперь приходит, но аттач если он текстовый то находится прям в теле письма, а если мультемидийный(картинка,звук) в теле просто пара символов.  

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 20:26 16-09-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pav4
а $content_type мы указываем правильный??


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:27 16-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
неуверен, а какой надо?

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 15:55 17-09-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Судя по скрипту, его вообще не указывают, в классе прописан content-type по умолчанию application/octet-stream

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 16:13 17-09-2006
pav4



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и как мне быть?

Всего записей: 211 | Зарегистр. 10-03-2005 | Отправлено: 17:54 17-09-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Brodyaga

Цитата:
в классе прописан content-type по умолчанию application/octet-stream

который можно прописать на свой..
pav4

Цитата:
и как мне быть?

пользоваться нормальными готовыми классами
http://phpmailer.sourceforge.net/

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:47 17-09-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » Бинарный аттачмент к письму в скрипте


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru