Автор Тема: письмо с аттачем. в html не вижу приаттаченную картинку. Помогите!  (Прочитано 4061 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн a@mail.dux.ru

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 105
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите, пожалуйста.

Навоял скрипт. корявый, не буду спорить, но все рабоатет.
Кроме одного: $htmlbody - это приложенный файл в виде html -
в нем на экране не выводятся приаттаченную каринку

Может я в html неправильно прописываю картинку? ПОдскажите

Проблема в том, что хочу что бы он отражался в письме как обычный html

$htmlbody="


 xxxx


DDDDDDDDD Ya TUUT!

123


";

//$htmlbody - текст в html виде
//$body - текст (тело письма)
//$attachmentfileNAME - имя файла (картинка);
//$attachmentPATH - имя файла и полный путь к нему;

$attachment1=$attachmentPATH ;


If ($attachmentPATH<>""){
//photo
$fp = fopen($attachment1, "r");
$read = fread($fp, filesize($attachment1));
$read = base64_encode($read);
$read = chunk_split($read);
fclose($fp);
 }
 



//$headers = "Content-Transfer-Encoding: 8bit\\r\\n";
$headers .= "Content-Type: multipart/mixed; boundary=\\"XX-1234DED00099A\\"\\r\\n";
$headers .= "MIME-Version: 1.0\\r\\n";


$headers .= "From: <$emailto>\\r\\n";


///// HTML //////
$headers .= "\\r\\n";
$headers .= "--XX-1234DED00099A\\r\\n";
//$headers .= "Content-Disposition: inline; filename=\\"mail.txt\\"\\r\\n";
//$headers .= "Content-Transfer-Encoding: 8bit\\r\\n";
$headers .= "Content-type: text/html;\\r\\n";
$headers .= "\\r\\n".$htmlbody."\\r\\n";
////// HTML /////

$headers .= "\\r\\n";
$headers .= "--XX-1234DED00099A\\r\\n";
//$headers .= "Content-Disposition: inline; filename=\\"mail.txt\\"\\r\\n";
$headers .= "Content-Transfer-Encoding: 8bit\\r\\n";
$headers .= "Content-type: text/plain; charset=koi8-r\\r\\n";
$headers .= "\\r\\n".$body."\\r\\n";



If ($attachmentPATH<>""){

$headers .= "--XX-1234DED00099A\\r\\n";
$headers .= "Content-type: application/octet-stream; name=\\"$attachmentfileNAME\\"\\r\\n";
//можно и так $headers .= "Content-type: application/octet-stream; \\r\\n";
$headers .= "Content-Disposition: attachment; filename=\\"$attachmentfileNAME\\"\\r\\n";
$headers .= "Content-Transfer-Encoding: base64\\r\\n";
$headers .= "\\r\\n".$read."\\r\\n";
$headers .= "--XX-1234DED00099A--\\r\\n";

 }
 ?>
 
if ( mail($emailto,$subject,$body, $headers)) {
echo " Has been sent to: $emailto";
} else {
echo "Увы, ошибка :о(";
}

?>

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
a@mail.dux.ru
не знаю, найдется ли желающий изучать килобайты твоего кода, поэтому предложу свой вариант с использованием pear-классов pear :: mail и pear :: mail :: mime

<?
include(
"Mail.php");
include(
"Mail/mime.php");

$params = array("text_charset" => "koi8-r""text_encoding" => "8bit");
$heads = array("From"=>"max@webscript.ru","Reply-To"=>"max@webscript.ru");
$to "president@whitehouse.gov";

$mail = new Mail_mime();
$mail->setHTMLBody(\'<html><body><b>aaaa</b><img src="photo.jpg"></body><html>\');
$mail->addHTMLImage("photo.jpg", \'image/jpeg\');

$body = $mail->get($params);
$hdrs = $mail->headers($heads);

$ml =& Mail::factory(\'mail\');
$ml->send($to, $hdrs, $body);
?>Ok

Правда я его еще не на всех почтовых клиентах проверил, но там где проверял - работало
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
во-первых, что у тебя тут
>
за локалхост?
во-вторых, cid - это не просто волшебное слово, а работает в паре с другим, волшебным.

Оффлайн a@mail.dux.ru

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 105
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RomikChef
Возможно и так, я это взял из письма присланного мне. Как правильно написать? может подскажешь, что это за волшебное слово?

Оффлайн a@mail.dux.ru

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 105
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Re: Макс
спасибо за код. буду разбираться. С классами я не дружу. Так как не могу понять что это и зачем. Вникнуть сначала надо. а русское описание пока не нашел. Но все-равно спасибо. Буду пробовать ваш код.

Оффлайн a@mail.dux.ru

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 105
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Re: Макс
Так а в твоем коде нехватает
include("Mail.php");
include("Mail/mime.php");
без них то код теряет смысл. может пришлешь? спасибо.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
если будеш пробовать, не забудь настроить include_path на папку с pear (если таковая у тебя есть)

А русскую доку по pear точно где-то я видел (только не помню где, я ею не пользовался)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн a@mail.dux.ru

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 105
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
вот она дока, но там я тоже не нашел
include("Mail.php");
include("Mail/mime.php");

http://dmitry.ints.net/library/prog/link/PHP/PEAR/index.html

Так где их брать? А! тепрь дошло, а как я узнае есть у моего Х-провайдера такая папка или нет?

Да и вообще ошибка только в том, как я описываю фотографию, а как правильно, я не знаю


Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Цитировать

Так где их брать? А! тепрь дошло, а как я узнае есть у моего Х-провайдера такая папка или нет?

вообще от провайдера зависит, некоторые устанавливают, некоторые - нет. Посмотри phpinfo() на тему include_path
Я pear  всегда сам устанавливаю так как у прова могут быть старые версии классов

Цитировать
Да и вообще ошибка только в том, как я описываю фотографию, а как правильно, я не знаю
вот можеш посмотреть как этот класс тело письма оформляет
http://php-master.net/mail/index.php
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн a@mail.dux.ru

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 105
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Re: RomikChef

спасибо помогло.

Надо было вставить в скрипт Content-ID:

а в html -


для тех кто так же как я мучался -та часть которая у меня была неправильно теперь выглядит так

If ($attachmentPATH<>""){

$headers .= "--XX-1234DED00099A\\r\\n";
$headers .= "Content-type: application/octet-stream; name=\\"$attachmentfileNAME\\"\\r\\n";
$headers .= "Content-Transfer-Encoding: base64\\r\\n";
$headers .= "Content-ID:<$attachmentfileNAME>\\r\\n"; ///New dobavka
$headers .= "Content-Disposition: attachment; filename=\\"$attachmentfileNAME\\"\\r\\n";
$headers .= "\\r\\n".$read."\\r\\n";
$headers .= "--XX-1234DED00099A--\\r\\n";

 }

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28