Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > как прикрутить отправку картинки к емайл


Автор: supervladislav 26.4.2008, 19:59
подскажите как переделать код чтоб можно было отправлять три файла(картинки) ,и что есть переменная $un
Код




<?php 
function XMail( $from, $to, $subj, $text, $filename) { 
    $f         = fopen($filename,"rb"); 
    $un        = strtoupper(uniqid(time())); 
    $head      = "From: $from\n"; 
    $head     .= "To: $to\n"; 
    $head     .= "Subject: $subj\n"; 
    $head     .= "X-Mailer: PHPMail Tool\n"; 
    $head     .= "Reply-To: $from\n"; 
    $head     .= "Mime-Version: 1.0\n"; 
    $head     .= "Content-Type:multipart/mixed;"; 
    $head     .= "boundary=\"----------".$un."\"\n\n"; 
    $zag       = "------------".$un."\nContent-Type:text/html;\n"; 
    $zag      .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; 
    $zag      .= "------------".$un."\n"; 
    $zag      .= "Content-Type: application/octet-stream;"; 
    $zag      .= "name=\"".basename($filename)."\"\n"; 
    $zag      .= "Content-Transfer-Encoding:base64\n"; 
    $zag      .= "Content-Disposition:attachment;"; 
    $zag      .= "filename=\"".basename($filename)."\"\n\n"; 
    $zag      .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n"; 
     
    return @mail("$to", "$subj", $zag, $head); 
} 
?>

Автор: Fortop 26.4.2008, 21:38
Цитата(supervladislav @  26.4.2008,  19:59 Найти цитируемый пост)
что есть переменная $un

Уникальный идентификатор

Судя по всему достаточно будет 
Размножить эту часть для $filename1, $filename2, $filename3
Код

    $zag      .= "Content-Type: application/octet-stream;"; 
    $zag      .= "name=\"".basename($filename)."\"\n"; 
    $zag      .= "Content-Transfer-Encoding:base64\n"; 
    $zag      .= "Content-Disposition:attachment;"; 
    $zag      .= "filename=\"".basename($filename)."\"\n\n"; 
    $zag      .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n"; 


Впрочем, все таки стоит почитать о формате аттачей, чтобы не пропустить какой-нибудь разделитель smile

Автор: supervladislav 26.4.2008, 22:59
а где есть стоящая информация на русском????

и я несовсем понимаю ,что делает функция  $f = fopen($filename,"rb"); 

Автор: Feldmarschall 26.4.2008, 23:10
http://web.opennet.ru/docs/RUS/mime_rfc/index.html

Автор: Fortop 26.4.2008, 23:14
Цитата(supervladislav @  26.4.2008,  22:59 Найти цитируемый пост)
и я несовсем понимаю ,что делает функция  $f = fopen($filename,"rb"); 

Это очень плохо.

Тогда тебе сюда http://www.php.net/manual/ru/book.filesystem.php

Автор: supervladislav 26.4.2008, 23:18
я просто про то,что у меня отправлятся будет графика.

Автор: Fortop 26.4.2008, 23:41
Для base64 нет разницы что отправлять.

Автор: _AXE_ 28.4.2008, 15:13
А почему бы не упростить и не отправлять письмо в виде html?
Хоть 10 тогда отправляй...

Автор: Feldmarschall 28.4.2008, 15:14
потому что это не упрощение, а усложнение.

Автор: DeamonShan 29.4.2008, 10:47
Код

$body.="--$bound\n";
$body.="Content-Type: application/octet-stream; name=\"$filename\"\n";
$body.="Content-Transfer-Encoding:base64\n";
$body.="Content-ID: <$file_id>\n\n";
$body.=base64_encode($file)."\n";



Прокрути это в цикле и вставь в тело... $bound - это разделители, $filename - имя файла, $file_id - присваиваешь сам, $file - содержимое файла...... и в конце цикла не забудь добавить такую строчку 

Код

$body.="--$bound--\n\n";


затем mail();

Добавлено через 3 минуты и 8 секунд
Код

$bound="beleberda";
$headers="From: \"Me\" <[email protected]>\n";
$headers.="To: \n";
$headers.="Subject: $subj\n";
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/alternative; boundary=\"$bound\"\n";
$body="--$bound\n";
$body.="Content-type: text/html; charset=\"windows-1251\"\n";
$body.="Content-Transfer-Encoding: 8bit\n\n";
$body.=$teLo."<BR>\n\n";

$body.="--$bound\n";
$body.="Content-Type: application/octet-stream; name=\"schet.doc\"\n";
$body.="Content-Transfer-Encoding:base64\n";
$body.="Content-ID: <doc_1>\n\n";
include "include/blanc_schet_dogovor.inc";
$body.=base64_encode($returnHTML)."\n";

$body.="--$bound\n";
$body.="Content-Type: application/octet-stream; name=\"schet.html\"\n";
$body.="Content-Transfer-Encoding:base64\n";
$body.="Content-ID: <html_1>\n\n";
include "include/blanc_schet_html.inc";
$body.=base64_encode($returnHTML)."\n";

$body.="--$bound--\n\n";
mail($mail, $subj, $body, $headers); 


пример атача двух файлов... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)