Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставить картинку в письмо.
 
 автор: prtygi   (18.05.2011 в 13:28)   письмо автору
 
 

Здравствуйте .
Хочу для красоты в письмах отправлять картинку логотип. Что бы после регистрации на моём сайте зарегистрировавшемуся приходило письмо с логотипом и его данными .
Отправку писем я реализовал а вот картинку вставить пока не могу . Может кто знает где я ошибся подскажите пожалуйста заранее большое спасибо .
Вот кусочек кода который я редактировал :

///////////////Отправка письма Админу

$kartinka="file.jpg";
$f=fopen($kartinka,"rb");
$bnd="registracya";
$r_login=$login;
$r_pass=$passwd;
$to =$r_email;
$to=$email;
$fromEmail='www.мойсайт.com@sr.мойсервер.net';
include("mail/reg.php");
$subject = $reg_reg_mail_subject;
$msg="--".$bnd."\n";
$msg.='Content-type: text/html; charset="windows-1251"'."\n";
$msg.="Content-Transfer-Encoding: 8bit\n\n";
$msg. =$reg_reg_mail;
$msg.='<img src="cid:reg_img">'."\n\n";
$msg.="--".$bnd."\n";
$msg.="Content-Type: image/jpeg; name=\"".basename($kartinka)."\"\n";
$msg.="Content-Transfer-Encoding:base64\n";
$msg.="Content-ID: <reg_img>\n\n";
$msg.=base64_encode(fread($f,filesize($kartinka)))."\n";
$msg.="--$bound--\n\n";
$mailheaders = "Content-Type: text/plain; charset=Windows-1251\n";
$mailheaders .= "From: ".$fromEmail."\n";
mail($to, $subject, $msg, $mailheaders);
}
echo "&regstatus=REG:OK&r_status2=ok";

?>

До вложения в само тело письма индифекатора дело не дошло потому что сейчас совсем не отправляет письма после моего редактирования кода который представлен выше .

  Ответить  
 
 автор: cheops   (18.05.2011 в 13:54)   письмо автору
 
   для: prtygi   (18.05.2011 в 13:28)
 

1) Не понятно откуда берется переменная $bound и чему она равна.
2) Не понятно, почему <img src="cid:reg_img"> находится среди почтовых заголовков.

Возможно вас заинтересует тема по ссылке http://softtime.ru/forum/read.php?id_forum=1&id_theme=60002

  Ответить  
 
 автор: prtygi   (18.05.2011 в 14:09)   письмо автору
 
   для: cheops   (18.05.2011 в 13:54)
 

1) Да это мне так посоветовали сделать . Возможно сказал что есть ошибки и за того что на скорую руку написано .
Я и сам ничего не понимаю.

За ссылку спасибо . Если так уже не выйдет, придется сделать как по ссылки .
Думаю что безвыходных ситуаций не бывает .
Спасибо

  Ответить  
 
 автор: parczynski   (18.05.2011 в 18:21)   письмо автору
 
   для: cheops   (18.05.2011 в 13:54)
 

1) $bound c $bnd перепутано. поменять надо.
2) <img src="cid:reg_img"> не среди заголовков а в теле письма

  Ответить  
 
 автор: prtygi   (18.05.2011 в 19:44)   письмо автору
 
   для: parczynski   (18.05.2011 в 18:21)
 

1) $bound c $bnd перепутано. поменять надо
< не пойму что на что поменять нужно и где вставить ? пробовал и так и этак ничего не выходит . Зарегистрироваться не возможно.

2) <img src="cid:reg_img"> не среди заголовков а в теле письма.
< тоесть если я правильно понял убрать нужно эту строчку с кода и вставить в тело письма .

<?
$reg_reg_mail_subject
="Данные вашего аккаунта";

$reg_reg_mail="Здравствуйте, $r_login,
Данное письмо содержит информацию для доступа



Логин  : 
$r_login                                                        Если мне нужна картинка    <img src="cid:reg_img">
Пароль : 
$r_pass                                                              вот здесь ?



---------------------
С Наилучшими Пожеланиями,
Администрация 
?>

  Ответить  
 
 автор: prtygi   (18.05.2011 в 19:44)   письмо автору
 
   для: parczynski   (18.05.2011 в 18:21)
 

Заранее спасибо за ответ

  Ответить  
 
 автор: cheops   (18.05.2011 в 20:06)   письмо автору
 
   для: parczynski   (18.05.2011 в 18:21)
 

1) Вам нужно сформировать уникальную последовательность, которая не будет встречаться больше в письме, для того, чтобы использовать её в качестве границы. Это переменная должна быть одна и она важна для структуры письма. Определите её и везде, где требуется граница используйте только её. $bound у вас не определена, значит её нужно заменить на $bnd. Однако, этого мало, так как у вас и в заголовках граница не определяется, лучше взять готовую функцию из темы http://softtime.ru/forum/read.php?id_forum=1&id_theme=60002 и воспользоваться ей. В ней не нужно разбираться, нужно просто подготовить массив изображений и текст, ссылающийся на них через md5().

  Ответить  
 
 автор: prtygi   (18.05.2011 в 21:07)   письмо автору
 
   для: cheops   (18.05.2011 в 20:06)
 

Функция которая дана вами по ссылки думаю намного лучше чем у меня та которое есть сейчас . Но я просто боюсь что я её не установлю.
Я хотел просто то что есть уже исправить (думал просто будет оказалось не легко)
Вот форма моей регистрации :
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=80760&page=1
если можете гляньте пожалуйста нужно ли будет делать сложные конфигурации файла для установки вашей функции ? Если да то боюсь тогда мне придется отказаться от идеи вставлять картинку в письма .Придется довольствоваться тем что имею сейчас .
Спасибо

  Ответить  
 
 автор: cheops   (18.05.2011 в 21:21)   письмо автору
 
   для: prtygi   (18.05.2011 в 21:07)
 

А мы поможем вам её установить, не бойтесь :) Можно начать отталкиваться от следующего скрипта
<?php
  $picture
[0]   = "file.jpg";
  
$r_login      $login
  
$r_pass       $passwd;
  
$to           $email
  
$reg_reg_mail "Здравствуйте, $r_login
Данное письмо содержит информацию для доступа 

Логин  : 
$r_login     Если мне нужна картинка    <img src='cid:".md5($picture[0])."'> 
Пароль : 
$r_pass      вот здесь ? 

--------------------- 
С Наилучшими Пожеланиями, 
Администрация"
;
  
send_mail($to$subject$reg_reg_mail$picture);
?>
PS Само определение функции можно разместить в любом удобном вам месте.

  Ответить  
 
 автор: prtygi   (18.05.2011 в 21:48)   письмо автору
 
   для: cheops   (18.05.2011 в 21:21)
 

Спасибо за поддержку в трудную минуту :)
Я сделал следующие действия :
1) В папку mail погрузил файл reg с содержимым которое вы дали выше .
2) Форму регистрации покаместь оставил без изменений .
Результат - регистрация пользователя проходит успешно но письмо на почту не приходит с данными пользователя . Админу тоже не приходит .

Как теперь подскажите в форму регистрации интегрировать ваш скрипт ?

  Ответить  
 
 автор: prtygi   (19.05.2011 в 12:43)   письмо автору
 
   для: cheops   (18.05.2011 в 21:21)
 

Скрипт я установил , теперь можно зарегистрироваться . Всё отправляется. Только проблема в том что приходит три письма.
Одно то что нужно с данными логин и пароль а два остальных письма одинаковые и вот такого содержания :

address@serwer.com
гДПЮБЯРБСИРЕ, prtygi, дЮММНЕ ОХЯЭЛН ЯНДЕПФХР ХМТНПЛЮЖХЧ ДКЪ ДНЯРСОЮ кНЦХМ : prtygi еЯКХ ЛМЕ МСФМЮ ЙЮПРХМЙЮ оЮПНКЭ : prtygi БНР ГДЕЯЭ ? --------------------- я мЮХКСВЬХЛХ оНФЕКЮМХЪЛХ, юДЛХМХЯРПЮЖХЪ

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

Вот как я скрипт изменил

///////////////Отправка письма Админу  
$r_login=$login;  
$r_pass=$passwd;  
$r_email=$email;  
include("mail/reg.php");
include("mail/reg.php");
$to =$r_email;
$subject = $reg_reg_mail_subject;
$msg =$reg_reg_mail;
$mailheaders = "Content-Type: text/plain; charset=Windows-1251\n";
$mailheaders .= "From: Мойадрес\n";
mail($to, $subject, $msg, $mailheaders);
$con=mysql_fetch_array(mysql_query("select * from seting"));
if ($con[regmail]=="yes"){
include("mail/newreg.php");
$to =$con['adm_email'];
$subject = $reg_reg_mail_subject;
$msg =$reg_reg_mail;
$mailheaders = "Content-Type: text/plain; charset=Windows-1251\n";
$mailheaders .= "From: $con[adm_email]\n";
mail($to, $subject, $msg, $mailheaders);
}
echo "&regstatus=REG:OK&r_status2=ok";
}
?>
<?php  
  
// Отправляем почтовое сообщение  
  
$picture[0] = "s_20040815135808.jpg"
  
$picture[1] = "s_20040815135939.jpg"
  
$mail_to "sombody@somewhere.ru"
  
$thm     convert_cyr_string("Тема сообщения""w""k"); 
  
$html "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> 
           <html> 
             <head><title>Почтовая рассылка</title></head> 
             <body><img src='cid:"
.md5($picture[0])."' border='0'>Тело сообщения<br><br><img src='cid:".md5($picture[1])."' border='0'></body> 
           </html>"

  
$html convert_cyr_string($html"w""k"); 
  if(
send_mail($mail_to$thm$html$picture)) 
    echo 
"Успех ".date("d.m.Y H:i"); 
  else 
    echo 
"Не отправлено"
  function 
send_mail($mail_to$thema$html$path)    
  { 
    
$EOL "\n"
    
$boundary     "--".md5(uniqid(time())); 
    
$headers    "MIME-Version: 1.0;$EOL";    
    
$headers   .= "From: address@server.com$EOL";   
    
// Вложение отсуствует 
    
$headers   .= "Content-Type: multipart/related; boundary=\"$boundary\"$EOL";   
       
    
$multipart  "--{$boundary}$EOL"
    
$multipart .= "Content-Type: text/html; charset=koi8-r$EOL";    
    
$multipart .= "Content-Transfer-Encoding: 8bit$EOL"
    
$multipart .= $EOL
    
$multipart .= str_replace("\r\n""\n"$html); 
    
$multipart .= $EOL

    if (!empty(
$path)) 
    { 
      for(
$i 0$i count($path); $i++) 
      { 
        
$file file_get_contents($path[$i]); 
        
$name basename($path[$i]); 
        
$multipart .=  "$EOL--$boundary$EOL";    
        
$multipart .= "Content-Type: image/jpeg; name=\"$name\"$EOL"
        
$multipart .= "Content-Transfer-Encoding: base64$EOL"
        
// Вложение отсуствует 
        // $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";  
        
$multipart .= "Content-ID: <".md5($name).">$EOL"
        
$multipart .= $EOL
        
$multipart .= chunk_split(base64_encode($file), 76$EOL); 
      } 
    } 

    
$multipart .= "$EOL--$boundary--$EOL";    
    echo 
$multipart
    if(!
mail($mail_to$thema$multipart$headers)) 
      return 
False
    else 
      return 
True;   
    exit;   
  } 
?> 

  Ответить  
 
 автор: cheops   (19.05.2011 в 12:58)   письмо автору
 
   для: prtygi   (19.05.2011 в 12:43)
 

>address@serwer.com
> гДПЮБЯРБСИРЕ, prtygi, дЮММНЕ ОХЯЭЛН ЯНДЕПФХР ХМТНПЛЮЖХЧ ДКЪ ДНЯРСОЮ кНЦХМ : >prtygi еЯКХ ЛМЕ МСФМЮ ЙЮПРХМЙЮ оЮПНКЭ : prtygi БНР ГДЕЯЭ ? --------------------- я >мЮХКСВЬХЛХ оНФЕКЮМХЪЛХ, юДЛХМХЯРПЮЖХЪ
Лучше отказаться от koi8-r и перейти на utf8. У вас текст изначально в win-1251?

  Ответить  
 
 автор: prtygi   (19.05.2011 в 13:21)   письмо автору
 
   для: cheops   (19.05.2011 в 12:58)
 

Изначально вот так "Content-Type: text/plain; charset=Windows-1251\n";

Что ничего не выйдет ?

  Ответить  
 
 автор: parczynski   (19.05.2011 в 18:43)   письмо автору
 
   для: prtygi   (19.05.2011 в 13:21)
 

"Content-Type: text/plain; charset=Windows-1251\n"; - это объявление кодировки для почтового клиента на котором письмо будет прочитано. вам нужно чтобы файл в котором хранится текст письма

  $html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">  
           <html>  
             <head><title>Почтовая рассылка</title></head>  
             <body><img src='cid:".md5($picture[0])."' border='0'>Тело сообщения<br><br><img src='cid:".md5($picture[1])."' border='0'></body>  
           </html>"; 

был в кодировке utf8 и строчку "Content-Type: text/plain; charset=Windows-1251\n"; тоже поменять на "Content-Type: text/plain; charset=utf-8\n";

  Ответить  
 
 автор: prtygi   (19.05.2011 в 19:46)   письмо автору
 
   для: parczynski   (19.05.2011 в 18:43)
 

Изменил как Вы сказали покаместь не помогло кодировка не изменилась .
Приходит почему то три письма ?
Два вот таких :
address@server.com кому: мне 
Показать подробные сведения 19:29 (23 ч. назад) 

гДПЮБЯРБСИРЕ, prtygi, дЮММНЕ ОХЯЭЛН ЯНДЕПФХР ХМТНПЛЮЖХЧ ДКЪ ДНЯРСОЮ кНЦХМ : prtygi еЯКХ ЛМЕ МСФМЮ ЙЮПРХМЙЮ  оЮПНКЭ : prtygi БНР ГДЕЯЭ ? --------------------- я мЮХКСВЬХЛХ оНФЕКЮМХЪЛХ, юДЛХМХЯРПЮЖХЪ 

Кстати в этих двух приходит картинка (только прикрепленная) Может путь не правильно указал.

И одно письмо то что в принцепе и нужно , вот оно :

Здравствуйте, prtygi,
Данное письмо содержит информацию для доступа

Логин  : prtygi     Если мне нужна картинка    <img src='cid:baf563d1cc4cae4badb06ace2d80524e'>
Пароль : prtygi      вот здесь ?

---------------------
С Наилучшими Пожеланиями,
Администрация

В этом письме картинки даже вложенной нет .

Как я понимаю отправляют эти три письма два скрипта , одно письмо отправляет тот скрипт который у меня изначально и стоял , и два одинаковых письма отправляет скрипт который поставил вчера дополнительно к тому что был уже установлен .

ФАЙЛ reg конфигурировал следующим образом :

<?php 
  $picture
[0]   = "images/INTER.jpg"
  
$r_login      $login;  
  
$r_pass       $passwd
  
$to           $email;  
  
$reg_reg_mail "Здравствуйте, $r_login,  
Данное письмо содержит информацию для доступа  

Логин  : 
$r_login     Если мне нужна картинка    <img src='cid:".md5($picture[0])."'>  
Пароль : 
$r_pass      вот здесь ?  

---------------------  
С Наилучшими Пожеланиями,  
Администрация"

  
send_mail($to$subject$reg_reg_mail$picture); 
?> 

Скорей всего я не прописал правильно тут ссылку или совсем её не прописал ?

Извините меня лишний раз может за глупые вопросы ( просто я в этом деле чайник )
Заранее Вам большое спасибо

  Ответить  
 
 автор: parczynski   (19.05.2011 в 22:34)   письмо автору
 
   для: prtygi   (19.05.2011 в 19:46)
 

естественно у вас 3 письма приходит, вы в скрипте 2 раза подключаете файл reg в котором у вас происходит отправка, и потом еще в самом скрипте 3-й раз отправляете письмо. файл reg тоже должен быть кодирован в utf-8 чтобы первые 2 письма нормально отображались. чтобы понять почему картинки не там где надо или почему их вообще нет сохраните письмо на компьютере откройте в блокноте и покажите чего у вас там

  Ответить  
 
 автор: prtygi   (19.05.2011 в 23:05)   письмо автору
7.1 Кб
 
   для: parczynski   (19.05.2011 в 22:34)
 

Вот сделал как вы и сказали . Посмотрите как приходят письма. Я прикрепил два скриншота :
там где есть картинка на скриншоте тех два письма приходят там где нет картинки то письмо приходит одно .

  Ответить  
 
 автор: prtygi   (19.05.2011 в 23:05)   письмо автору
94.2 Кб
 
   для: parczynski   (19.05.2011 в 22:34)
 

вот еще один скрин

  Ответить  
 
 автор: parczynski   (20.05.2011 в 00:12)   письмо автору
 
   для: prtygi   (19.05.2011 в 19:46)
 

письма где есть картинка - они у вас отправляются из reg.php, так как их приходит 2 и reg.php у вас почему-то 2 раза инклудится. судя по тому что у вас отображается в почтовом клиенте у вас файл reg.php в кодировке cp1251, а в заголовке письма вы ставите KOI8-R. вам нужно чтобы везде кодировка utf-8 стояла. третья отсылка у вас происходит из главного файла который у вас тоже в кодировке cp1251, но оно отображается нормально потому что вы там используете функцию
convert_cyr_string($html, "w", "k");
этого не нужно, просто сохраните все файлы в utf-8 и поменяйте строчку
$multipart .= "Content-Type: text/html; charset=koi8-r$EOL";

на
$multipart .= "Content-Type: text/html; charset=utf-8$EOL";

и картинок нету в третем сообщении потому что у вас картинка по адресу images/INTER.jpg, а вы пытаетесь загрузить 2 картинки s_20040815135808.jpg и s_20040815135939.jpg

или уберите
include("mail/reg.php"); 
include("mail/reg.php");

и поставьте в главном файле нормальные адреса картинок
или уберите код
// Отправляем почтовое сообщение   
  $picture[0] = "s_20040815135808.jpg";  
  $picture[1] = "s_20040815135939.jpg";  
  $mail_to = "sombody@somewhere.ru";  
  $thm     = convert_cyr_string("Тема сообщения", "w", "k");  
  $html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">  
           <html>  
             <head><title>Почтовая рассылка</title></head>  
             <body><img src='cid:".md5($picture[0])."' border='0'>Тело сообщения<br><br><img src='cid:".md5($picture[1])."' border='0'></body>  
           </html>";  
  $html = convert_cyr_string($html, "w", "k");  
  if(send_mail($mail_to, $thm, $html, $picture))  
    echo "Успех ".date("d.m.Y H:i");  
  else  
    echo "Не отправлено"; 

и оставьте только один инклуд



PS и вложите в ответе само письмо (*.eml) а не скриншоты

  Ответить  
 
 автор: prtygi   (20.05.2011 в 02:00)   письмо автору
 
   для: parczynski   (20.05.2011 в 00:12)
 

сейчас письма пришли уже без иероглифов .
Только я не пойму точнее не знаю как письма сохранять в (*.eml) формате .

  Ответить  
 
 автор: prtygi   (20.05.2011 в 02:37)   письмо автору
 
   для: parczynski   (20.05.2011 в 00:12)
 

Вот теперь что получилось :

///////////////Отправка письма Админу  
$r_login=$login;  
$r_pass=$passwd;  
$r_email=$email;  
include("mail/reg.php");
$to =$r_email;
$subject = $reg_reg_mail_subject;
$msg =$reg_reg_mail;
$multipart .= "Content-Type: text/html; charset=utf-8$EOL";
$mailheaders .= "From: Casino177\n";
mail($to, $subject, $msg, $mailheaders);
$con=mysql_fetch_array(mysql_query("select * from seting"));
if ($con[regmail]=="yes"){
include("mail/newreg.php");
$to =$con['adm_email'];
$subject = $reg_reg_mail_subject;
$msg =$reg_reg_mail;
$multipart .= "Content-Type: text/html; charset=utf-8$EOL";
$mailheaders .= "From: $con[adm_email]\n";
mail($to, $subject, $msg, $mailheaders);
}
echo "&regstatus=REG:OK&r_status2=ok";
}
?>
<?php  
  
function send_mail($mail_to$thema$html$path)    
  { 
    
$EOL "\n"
    
$boundary     "--".md5(uniqid(time())); 
    
$headers    "MIME-Version: 1.0;$EOL";    
    
$headers   .= "From: address@server.com$EOL";   
    
// Вложение отсуствует 
    
$headers   .= "Content-Type: multipart/related; boundary=\"$boundary\"$EOL";   
       
    
$multipart  "--{$boundary}$EOL"
    
$multipart .= "Content-Type: text/html; charset=utf-8$EOL";    
    
$multipart .= "Content-Transfer-Encoding: 8bit$EOL"
    
$multipart .= $EOL
    
$multipart .= str_replace("\r\n""\n"$html); 
    
$multipart .= $EOL

    if (!empty(
$path)) 
    { 
      for(
$i 0$i count($path); $i++) 
      { 
        
$file file_get_contents($path[$i]); 
        
$name basename($path[$i]); 
        
$multipart .=  "$EOL--$boundary$EOL";    
        
$multipart .= "Content-Type: image/jpeg; name=\"$name\"$EOL"
        
$multipart .= "Content-Transfer-Encoding: base64$EOL"
        
// Вложение отсуствует 
        // $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";  
        
$multipart .= "Content-ID: <".md5($name).">$EOL"
        
$multipart .= $EOL
        
$multipart .= chunk_split(base64_encode($file), 76$EOL); 
      } 
    } 

    
$multipart .= "$EOL--$boundary--$EOL";    
    echo 
$multipart
    if(!
mail($mail_to$thema$multipart$headers)) 
      return 
False
    else 
      return 
True;   
    exit;   
  } 
?> 

Проблема еще в том что этот скрипт который я доустановил плохо взаимодействует с моим движком(выражается это в том что долго сохраняется при нажатии кнопки сохранить и ошибку показывает на подсказке после нажатия сохранить ). Автор этого скрипта выразился в комментарии что скрипт не делался под что то конкретное наверное я думаю что бы он был универсальным по этому я думаю его нужно заглушить как то . То есть хотелось бы что бы письмо приходило с первого родного скрипта .
Так что даже и не знаю. Я Вам наверное уже изрядно надоел .Если не ответите не обижусь . Оставлю как есть .
Спасибо

  Ответить  
 
 автор: parczynski   (20.05.2011 в 14:57)   письмо автору
 
   для: prtygi   (20.05.2011 в 02:37)
 

///////////////Отправка письма Админу   

$subject = $reg_reg_mail_subject; 
include("mail/reg.php"); 
echo "&regstatus=REG:OK&r_status2=ok"; 

function send_mail($mail_to, $thema, $html, $path) {  
    $EOL = "\n";  
    $boundary     = "--".md5(uniqid(time()));  
    $headers    = "MIME-Version: 1.0;$EOL";     
    $headers   .= "From: address@server.com$EOL";    
    // Вложение отсуствует  
    $headers   .= "Content-Type: multipart/related; boundary=\"$boundary\"$EOL";    
        
    $multipart  = "--{$boundary}$EOL";  
    $multipart .= "Content-Type: text/html; charset=utf-8$EOL";     
    $multipart .= "Content-Transfer-Encoding: 8bit$EOL";  
    $multipart .= $EOL;  
    $multipart .= str_replace("\r\n", "\n", $html);  
    $multipart .= $EOL;  

    if (!empty($path)) {  
      for($i = 0; $i < count($path); $i++)  
      {  
        $file = file_get_contents($path[$i]);  
        $name = basename($path[$i]);  
        $multipart .=  "$EOL--$boundary$EOL";     
        $multipart .= "Content-Type: image/jpeg; name=\"$name\"$EOL";  
        $multipart .= "Content-Transfer-Encoding: base64$EOL";  
        // Вложение отсуствует  
        // $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   
        $multipart .= "Content-ID: <".md5($name).">$EOL";  
        $multipart .= $EOL;  
        $multipart .= chunk_split(base64_encode($file), 76, $EOL);  
      }  
    }  

    $multipart .= "$EOL--$boundary--$EOL";     
    echo $multipart;  
    if(!mail($mail_to, $thema, $multipart, $headers))  
      return False;  
    else  
      return True;    
    exit;    
  }
?> 


PS и вы ж говорите какую именно ошибку показывает после нажатия сохранить

PSS сохранить в eml - я имею ввиду открыть письмо которое вы получаете в вашем почтовом клиенте и там сохранить (у меня, например, в thunderbird Файл->Сохранить как -> файл)

  Ответить  
 
 автор: prtygi   (20.05.2011 в 16:51)   письмо автору
 
   для: parczynski   (20.05.2011 в 14:57)
 

Спасибо что отозвались.
Вставил Ваш вышеизложенный код .
Результат замечательный можно сказать .
1) Приходит одно письмо как и должно быть .
2) Теперь его можно читать .
3) Ошибки не выдаёт .

Но есть небольшие нюансы:
1) Не приходит теперь письмо уведомление админу о том что зарегился новый игрок .( видимо вы убрали эту строчку со скрипта )
2) Картинка вложенная приходит но там где должна быть не появляется наверное что то неправильно указано в пути . В общем как в скринах выше .
3) На почту Вам отправил eml письмо ( что бы здесь не засчиталось как реклама )
Заранее Вам спасибо

  Ответить  
 
 автор: parczynski   (20.05.2011 в 18:05)   письмо автору
 
   для: prtygi   (20.05.2011 в 16:51)
 

1)
///////////////Отправка письма Админу    

$subject = $reg_reg_mail_subject;  
include("mail/reg.php");  
if ($con[regmail]=="yes"){ 
include("mail/newreg.php"); 
$to =$con['adm_email']; 
$subject = $reg_reg_mail_subject; 
$msg =$reg_reg_mail; 
$multipart .= "Content-Type: text/html; charset=utf-8$EOL"; 
$mailheaders .= "From: $con[adm_email]\n"; 
mail($to, $subject, $msg, $mailheaders); 

echo "&regstatus=REG:OK&r_status2=ok";  
}  
function send_mail($mail_to, $thema, $html, $path) {   
    $EOL = "\n";   
    $boundary     = "--".md5(uniqid(time()));   
    $headers    = "MIME-Version: 1.0;$EOL";      
    $headers   .= "From: address@server.com$EOL";     
    // Вложение отсуствует   
    $headers   .= "Content-Type: multipart/related; boundary=\"$boundary\"$EOL";     
         
    $multipart  = "--{$boundary}$EOL";   
    $multipart .= "Content-Type: text/html; charset=utf-8$EOL";      
    $multipart .= "Content-Transfer-Encoding: 8bit$EOL";   
    $multipart .= $EOL;   
    $multipart .= str_replace("\r\n", "\n", $html);   
    $multipart .= $EOL;   

    if (!empty($path)) {   
      for($i = 0; $i < count($path); $i++)   
      {   
        $file = file_get_contents($path[$i]);   
        $name = basename($path[$i]);   
        $multipart .=  "$EOL--$boundary$EOL";      
        $multipart .= "Content-Type: image/jpeg; name=\"$name\"$EOL";   
        $multipart .= "Content-Transfer-Encoding: base64$EOL";   
        // Вложение отсуствует   
        // $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";    
        $multipart .= "Content-ID: <".md5($name).">$EOL";   
        $multipart .= $EOL;   
        $multipart .= chunk_split(base64_encode($file), 76, $EOL);   
      }   
    }   

    $multipart .= "$EOL--$boundary--$EOL";      
    echo $multipart;   
    if(!mail($mail_to, $thema, $multipart, $headers))   
      return False;   
    else   
      return True;     
    exit;     
  } 
?> 


2) в файле reg.php поменяйте <img src='cid:".md5($picture[0])."'> на <img src='cid:".md5(basename($picture[0]))."'>

2cheops не понятно зачем вообще нужны эти basename и md5 в функции?
сектор с картинкой ведь как угодно обозвать можно.

  Ответить  
 
 автор: prtygi   (20.05.2011 в 19:17)   письмо автору
436.2 Кб
 
   для: parczynski   (20.05.2011 в 18:05)
 

Вот теперь классно спасибо , картинка пришла . Положу скрин посмотрите если интересно .
Только вот не пойму как управлять её расположением ? размер я поменяю допустим а вот само расположение не пойму как ?
и может где то нужно в скрипте указать адрес эл. почты админа . Уведомление не приходит о регистрации . Хотя ради картинки можно было бы и пожертвовать этой функцией :)
Спасибо

  Ответить  
 
 автор: prtygi   (20.05.2011 в 19:37)   письмо автору
181.8 Кб
 
   для: parczynski   (20.05.2011 в 18:05)
 

Вот скрин поместил по поводу расположения картинки с рыбой . Как можно сделать что бы расположение этой картинки было в этом месте ?
Спасибо

  Ответить  
 
 автор: parczynski   (20.05.2011 в 20:54)   письмо автору
 
   для: prtygi   (20.05.2011 в 19:37)
 

упустил добавьте
$con=mysql_fetch_array(mysql_query("select * from seting"));

перед
if ($con[regmail]=="yes"){ 


поменяйте
 $reg_reg_mail = "Здравствуйте, $r_login,   
Данное письмо содержит информацию для доступа   

Логин  : $r_login     Если мне нужна картинка    <img src='cid:".md5($picture[0])."'>   
Пароль : $r_pass      вот здесь ?   

---------------------   
С Наилучшими Пожеланиями,   
Администрация"; 

на

$reg_reg_mail = "<img src='cid:124ff' style='float:right;margin-top:30px;' width='200px' height='200px'>  Здравствуйте, $r_login,   
Данное письмо содержит информацию для доступа   

Логин  : $r_login     Если мне нужна картинка 
Пароль : $r_pass      вот здесь ?   

---------------------   
С Наилучшими Пожеланиями,   
Администрация"; 

  Ответить  
 
 автор: prtygi   (20.05.2011 в 21:23)   письмо автору
80.6 Кб
 
   для: parczynski   (20.05.2011 в 20:54)
 

Сделал всё вроде бы , письмо админу приходит .

Но картинка в том месте не появилась , там пустой квадратик .На скрине сделал .

  Ответить  
 
 автор: parczynski   (20.05.2011 в 21:41)   письмо автору
 
   для: prtygi   (20.05.2011 в 21:23)
 

ааа basename() забыл

<img src='cid:".md5(basename($picture[0]))."'>


я уже в кодах путаюсь

  Ответить  
 
 автор: prtygi   (21.05.2011 в 02:11)   письмо автору
 
   для: parczynski   (20.05.2011 в 21:41)
 

Что то не пойму где именно это вставить? Пытался то там то там картинка в разных местах появляется , и как скажите текст выровнять то есть что бы не в кучи был *?
Спасибо большое

  Ответить  
 
 автор: prtygi   (21.05.2011 в 02:11)   письмо автору
 
   для: parczynski   (20.05.2011 в 21:41)
 

.

  Ответить  
 
 автор: parczynski   (21.05.2011 в 17:25)   письмо автору
 
   для: prtygi   (21.05.2011 в 02:11)
 

$reg_reg_mail = "<img src='cid:".md5(basename($picture[0]))."' style='float:right;margin-top:30px;' width='200px' height='200px'>  Здравствуйте, $r_login,    
Данное письмо содержит информацию для доступа    

Логин  : $r_login     Если мне нужна картинка  
Пароль : $r_pass      вот здесь ?    

---------------------    
С Наилучшими Пожеланиями,    
Администрация";

  Ответить  
 
 автор: prtygi   (21.05.2011 в 23:04)   письмо автору
 
   для: parczynski   (21.05.2011 в 17:25)
 

Спасибо большое картинка теперь появляется именно в том месте в котором я и хотел ( как говориться сбылась мечта и.... :) ) Правда текст так в кучи и остался без пробелов в одну строчку . Может каких-то символов не хватает? И темы письма нет . Ладно думаю это уже всё может и не суть.
Главное что информация приходит в полном объеме. И это очень хорошо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования