Forum Webscript.Ru

Программирование => PHP => Тема начата: golden-den от 06 Января 2006, 21:35:03

Название: Вложение картинки в письмо.
Отправлено: golden-den от 06 Января 2006, 21:35:03
есть функция (скачал с php.net вроде )

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";

    if (mail($to, $subj, $zag, $head)) {return true;}
else {return false;};
};

Она присоединяет файл к письму, как вложение.
Только письмо приходит с вложением, не отображающемся в тексте письма

письмо например такое
----------------------
Представляем вам нновый образец станка...
"станок"

-----------------------

при этом в письме отображается текст, а вместо картинки - рамка.
Картинка же есть в самом письме, но как вложение. ее можно посмотреть, кликнув на вложение

Как сделать, чтобы картинка отображалась непосредственно в html коде письма?

В почте смотрел как спам устроем - там пишут ""
Что за cid?


PS сам спамом не занимаюсь ;-)
Название: Вложение картинки в письмо.
Отправлено: golden-den от 07 Января 2006, 11:27:47
C cid разобрался, только теперь приходит письмо, картинку можно посмотреть, кликнув на нее,а в самом письме
она не показывается, хотя при выделении всего текста письма видно, что под картинку отведен большой белый квадрат (совпадает с размерами картинки).
Т.е. Bat вроде пытается ее отобразить, выделят место под нее, только не получается
Content-Type: multipart/mixed; заменял на Content-Type: related; и
на Content-Type: alternative;


function XMail( $from, $to, $subj, $text, $filename) {
    $f         = fopen($filename,"rb");
    $un        = strtoupper(uniqid(time()));
$head   = "From: $from\\n";
$head     .= "Subject: $subj\\n";
$head     .= "Reply-To: $from\\n";
$head     .= "MIME-Version: 1.0\\n";
$head     .= "Content-Type: multipart/mixed;";
$head     .= "boundary=\\"next-part--".$un."\\"\\n\\n";
$zag       = "--next-part--".$un."\\n";
$zag      .= "Content-Type: text/html;\\n";
$zag      .= "Content-Transfer-Encoding: 7bit\\n\\n";
$zag      .= "$text\\n\\n";
$zag      .= "--next-part--".$un."\\n";
$zag      .= "Content-Type: image/gif; \\n";
$zag      .= "Content-Transfer-Encoding: base64\\n";
$zag      .= "Content-ID: image_0\\n";
$zag      .= "Content-Disposition: inline;";
$zag      .= "filename=\\"".basename($filename)."\\"\\n\\n";
$zag      .= chunk_split(base64_encode(fread($f,filesize($filename))))."\\n";
$zag      .= "--next-part--".$un."--\\n\\n";

    if (mail($to, $subj, $zag, $head)) {return true;}
else {return false;};
};
Название: Вложение картинки в письмо.
Отправлено: golden-den от 08 Января 2006, 12:40:47
Вроде делал по стандарту, пробовал разные комбинации,
затем все надоело и решил попробовать PHPMailer http://phpmailer.sourceforge.net/tutorial.html (http://phpmailer.sourceforge.net/tutorial.html)
Там же все работает ....

Проблема осталась: Вложения приходят, только BAT не хочет отображать картинку, а место под нее оставляет .
При этом в спаме картинки как-то отображаются

Кто-нибудь пробовал PHPMailer ?
А может в бате дело или в моих руках все-таки?

Вот код с использованием класса PHPMailer

$mailer = new FreakMailer();
$mailer->Subject = \'Это тест\';
$htmlBody = \'



Untitled


"МОя
Тут должна быть картинка



\';

$mailer->Body = $htmlBody;
$mailer->isHTML(true);
$mailer->AddAttachment($_SERVER[\'DOCUMENT_ROOT\'].\'/images/image_blank.gif\', \'image_blank.gif\');
$mailer->AddAttachment($_SERVER[\'DOCUMENT_ROOT\'].\'/images/img_link_blank.gif\', \'image_link_blank.gif\');
$mailer->AddEmbeddedImage($_SERVER[\'DOCUMENT_ROOT\'].\'/images/image_blank.gif\', \'image_lnk_blank\', \'image_blank.gif\', \'base64\',\'image/gif\');

$mailer->AddAddress(\'ddd@ddd.ru\', \'vvvvv\');

if(!$mailer->Send()) { echo \'Не могу отослать письмо!\';}
else{  echo \'Письмо отослано!\';}
$mailer->ClearAddresses();
$mailer->ClearAttachments();


И еще странно то, что на @mail.ru просто не приходят письма - нет их, а на другой сервер приходят, правда там стоит антиспамовая система, которая добавляет заголовки к письму "Типа это спам"
Название: Вложение картинки в письмо.
Отправлено: golden-den от 08 Января 2006, 13:43:17
настроил  себе MS Outlook, который в XP.
В нем все работает - приходят и отображаются вложения...
В чем  же дело?
Как подстроить под все почтовые прграммы?


Может все-таки кто-нибудь подскажет?
Что-то тишина на мой вопрос
Название: Вложение картинки в письмо.
Отправлено: Slastik от 10 Января 2006, 13:56:55
http://phpclub.ru/detail/article/mail
Название: Вложение картинки в письмо.
Отправлено: golden-den от 10 Января 2006, 15:00:46
Slastik
читал и не раз - эта статья у меня сохранена на диске.
Дело в том, что я уже скачал готовый класс, который проверен давно.
Всё равно при просмотре присем в Bat не показывается картинка.
(см. пред мое сообщение)