Отправка почты с вложенными файлами.

Статус
В этой теме нельзя размещать новые ответы.

Теплый Снег

Новичок
Отправка почты с вложенными файлами.

Помогите написать код отправки файла на мыло. Файл прикрепляется на стороне клиента и отправляется мне на почту [кому-либо на почту]. Зарание благодарен.
______________________________
look my site [фотомечты] www.photodreams.h15.ru
 

Bu-Bu

Любитель PHP
Re: Отправка почты с вложенными файлами.

Автор оригинала: Теплый Снег
Помогите написать код отправки файла на мыло. Файл прикрепляется на стороне клиента и отправляется мне на почту [кому-либо на почту]. Зарание благодарен.
______________________________
look my site [фотомечты] www.photodreams.h15.ru
Файл - это слишком мало. Есть разные файлы, разные задачи. Если картинки - одно, а другие файлы - другое
 

Xeon303

Новичок
Вот почитай здесь: http://phpclub.ru/detail/article/mail

Там все доступно написано про вложения
 

DEEX

Guest
Bu-Bu, да действительно какая нафиг разница, картинка или текстовый докумеент... главное что файл
 

shuttle

Новичок
Вот, leonid_p , попробовал я ссылку
http://phpmailer.sourceforge.net/

Весчь красивая, но не могу у себя запустить следующее.

include('Mail.php');
include('Mail/mime.php');

$text = 'Text version of email';
$html = 'HTML version of email';
$file = '/home/richard/example.php';
$crlf = "\r\n";
$hdrs = array(
'From' => '[email protected]',
'Subject' => 'Test mime message'
);

$mime = new Mail_mime($crlf);

$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$mime->addAttachment($file, 'text/plain');

$body = $mime->get();
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('mail');
$mail->send('postmaster@localhost', $hdrs, $body);
?>

Файлик назвал a.php
Ошибка следующая
Fatal error: Call to undefined method PEAR_Error::send() in C:\Inetpub\Claim\a.php on line 24
Почему-то в классе mail не видит функцию send.
 

vinslave

Новичок
может этот скриптик поможет. Отправляет html с картиками.
Если это не картики, а просто файлы, то они просто будут прикреплены и не имют никакого отношения к html
PHP:
<?php 
   $__boundary = md5(rand(0, time())); 

   $pic_content = join("", file("kopie_img_0199.jpg")); 
   $pic_content = base64_encode($pic_content); 
   
   $pic_content1 = join("", file("meinfoto.jpg")); 
   $pic_content1 = base64_encode($pic_content1); 

   $html_content = join("", file("sample.html")); 
    
   $message = "--$__boundary 
Content-Type: text/html 

$html_content 
--$__boundary 
Content-Type: image/jpeg; name=\"kopie_img_0199.jpg\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=\"kopie_img_0199.jpg\" 

$pic_content 
--$__boundary 
Content-Type: image/jpeg; name=\"meinfoto.jpg\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=\"meinfoto.jpg\" 

$pic_content1 
--$__boundary-- 

"; 

$headers = "From: [email][email protected][/email] 
To: [email][email protected][/email] 
Subject: test 
MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary=\"$__boundary\" 
"; 
// echo $message;
mail("[email protected]", "test [multipart]", $message, $headers); 
?>
 

Теплый Снег

Новичок
Автор оригинала: vinslave
может этот скриптик поможет. Отправляет html с картиками.
Если это не картики, а просто файлы, то они просто будут прикреплены и не имют никакого отношения к html
PHP:
<?php 
   $__boundary = md5(rand(0, time())); 

   $pic_content = join("", file("kopie_img_0199.jpg")); 
   $pic_content = base64_encode($pic_content); 
   ....
?>
я вот не знаю, шо за функция join? а так вообще прояснилось маленько.... vinslave, спасибо )
 

Теплый Снег

Новичок
спасибо большое))
____________________________
ОДНАКО
сделал форму ввода пути к фотке на компе юзера, все дела...
обрабатываю форму скриптом: (fle - элемент массива ввода формы, отвечающий пути к файлу)
PHP:
$__boundary = md5(rand(0, time())); 
   
   $pic_content = file_get_contents($HTTP_POST_VARS['fle']);
   $pic_content = base64_encode($pic_content); 
    
   
     
     $message = "--$__boundary 
Content-Type: text/html 

$pic_content 
--$__boundary 
Content-Type: image/jpeg; name=\"".basename($HTTP_POST_VARS['fle'])."\"
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=\"".basename($HTTP_POST_VARS['fle'])."\"

"; 

$headers = "From: [email protected] 
To: [email protected]
Subject: photosite 
MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary=\"$__boundary\" 
"; 

mail("[email protected]", "sitephoto [multipart]", $message, $headers);
Апач выдает такое:
___________________________________
Warning: file_get_contents(D:\\book.jpg): failed to open stream: No such file or directory in /home/p/photodreams.h15.ru/WWW/sent.php on line 276
Content-type: text/html
___________________________________

как сделать, чтоб загрузилась фотка именно с удаленного компа, а не с сервера?... или ошибка какая есть?...
 

Теплый Снег

Новичок
Автор оригинала: shuttle
Спасибо, и закачка и отправка получились на ура.
большая просьба! можешь выложить получившийся код... у меня че-то и с mime не получилось, и так... на мыло прихидит какая-то фигня... я видимо страшно туплю.... ПЛИЗ....
_________________________________________
и еще... где найти полное описание классов... таких, как Mail... ибо: Fatal error: Undefined class name 'mail'
 

Nogrogomed

Новичок
Вот мой пример:
PHP:
$email="[email protected]"; 

$soob=<<<END 
<html><body> 
что-то 
</body> 
</html> 
END;

$__boundary = md5(rand(0, time())); 

$headers  = "From: [email][email protected][/email] 
Subject: test 
MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary=\"{$__boundary}\" 
"; 
$file_block=""; 
if ($_FILES['fail']['name']) 
{ 
   $file=base64_encode(file_get_contents($_FILES['fail']['tmp_name']));
   $file_block=" 
--{$__boundary}. 
Content-Type: application/octet-stream; name=\"{$_FILES['fail']['name']}\" 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; filename=\"{$_FILES['fail']['name']}\" 

{$file}"; 
   } 

   $message="--{$__boundary} 
Content-Type: text/html 

{$soob}" . $file_block . " 
--{$__boundary}-- 

"; 

echo $message; 

if (mail($email, "test", $message, $headers)) 
{ 
        $msg="Отправилось"; 
} 
   else 
   { 
        $msg="Не отправилось"; 
   } 
  echo $msg;
В бате работает... в других почтовиках не проверял...
 

Klemanso

Новичок
Добрый день!

требуется помощь в таком вопросе

скрипт ввода данных:

<FORM action=mail.php method=post enctype="multipart/form-data">
<table border=0 width="100%">
<TR>
<TD align=right ><p><B>&#212;&#200;&#206;:</B></TD>
<TD align=left ><INPUT class=inputguest name=lname size=40></TD></TR>
<TR>
<TD align=right><p><B>&#206;&#240;&#227;&#224;&#237;&#232;&#231;&#224;&#246;&#232;&#255;: </B></TD>
<TD align=left ><INPUT class=inputguest name=org size=40></TD></TR>
<TR>
<TD align=right><p><B>&#210;&#229;&#235;&#229;&#244;&#238;&#237;: </B></TD>
<TD align=left ><INPUT class=inputguest name=tel size=20></TD></TR>
<TR>
<TD align=right><p><B>&#194;&#224;&#248; e-mail:</B></TD>
<TD align=left ><INPUT class=inputguest name=email size=20></TD></TR>
<TR>
<TD align=right><p class=subtext2><B>&#210;&#229;&#234;&#241;&#242; &#239;&#232;&#241;&#252;&#236;&#224;:</B></TD>
<TD align=left ><TEXTAREA class=inputguest cols=30 name=letter rows=6 wrap=virtual></TEXTAREA></TD></TR>
<tr>
<td align=right class="postfoot" colspan="2"><font color="#800000"><b>Прикрепленные файлы :</b></font></td></br>
</tr>
<tr>
<td align=right class='row1' width="100%"><input class='textinput' type="file" name="myfilel" class="button"></td>

</tr>
<font color="#800000"><i>Вы можете добавить файлы к данному сообщению. Максимальный размер файла: 51200000</i></font></br>
<br></br>

<TR>
<TD align=right vAlign=top></TD>
<TD align=left><INPUT class="button" name="submitsend" type="submit" value="&#206;&#242;&#239;&#240;&#224;&#226;&#232;&#242;&#252;">
<INPUT class="button" name="reset" type="reset" value="&#206;&#247;&#232;&#241;&#242;&#232;&#242;&#252;">
</TD>
</tr>
</table>
</FORM>

mailer:

$lname = trim($_POST['lname']);
$org = trim($_POST['org']);
$tel = trim($_POST['tel']);
$email = trim($_POST['email']);
$letter = trim($_POST['letter']);
$myfilel = trim($_POST['myfile1']);
if(empty($lname) && empty($org)) links("&#194;&#226;&#229;&#228;&#232;&#242;&#229; &#212;&#200;&#206; &#232;&#235;&#232; &#238;&#240;&#227;&#224;&#237;&#232;&#231;&#224;&#246;&#232;&#254;");
if(empty($tel) && empty($email)) links("&#194;&#226;&#229;&#228;&#232;&#242;&#229; &#226;&#224;&#248; e-mail &#232;&#235;&#232; &#242;&#229;&#235;&#229;&#244;&#238;&#237;");
if(!empty($email))
{
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
links("&#205;&#229;&#226;&#229;&#240;&#237;&#238; &#226;&#226;&#229;&#228;&#229;&#237; &#229;-mail. &#194;&#226;&#229;&#228;&#232;&#242;&#229; e-mail &#226; &#226;&#232;&#228;&#229; <i>[email protected]</i> \n");
}
}
if(empty($letter)) links("&#209;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#229; &#237;&#229; &#226;&#226;&#229;&#228;&#229;&#237;&#238;");
$query = "SELECT * FROM mailer";
$mal = mysql_query($query);
if ($mal)
{
$msg = "<html><head><title>&#199;&#224;&#255;&#226;&#234;&#224; &#237;&#224; &#242;&#234;&#224;&#237;&#252;</title></head>
<body><font face='Tahoma' color=#5C512F size=2>
<div><b>&#212;&#200;&#206;:</b> ".$lname."</div>
<div><b>&#206;&#240;&#227;&#224;&#237;&#232;&#231;&#224;&#246;&#232;&#255;:</b> ".$org."</div>
<div><b>&#210;&#229;&#235;&#229;&#244;&#238;&#237;:</b> ".$tel."</div>
<div><b>e-mail:</b> ".$email."</div>
<div><b>&#210;&#229;&#234;&#241;&#242; &#239;&#232;&#241;&#252;&#236;&#224;:</b><br>".$letter."</div>
<div><b>&#194;&#235;&#238;&#230;&#229;&#237;&#232;&#229;:</b><br>".$myfilel."</div></font></body></html>";
$headers = "Content-type: text/html; charset=windows-1251 \r\n";
$headers .= "From: <[email protected]>\r\n";
$headers.="X-Priority: 1\n";
$headers.="Return-Path: <$email>\n";
$tema = "&#199;&#224;&#255;&#226;&#234;&#224; &#237;&#224; &#242;&#234;&#224;&#237;&#252;";


if(mail($valmail, $tema, $msg, $headers))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=\"index.php\"'>
</HEAD></HTML>";
}
else
{
links("&#202; &#241;&#238;&#230;&#224;&#235;&#229;&#237;&#232;&#254;, &#239;&#232;&#241;&#252;&#236;&#238; &#237;&#229; &#225;&#251;&#235;&#238; &#238;&#242;&#239;&#240;&#224;&#226;&#235;&#229;&#237;&#238;");
}
}
else puterror("&#206;&#248;&#232;&#225;&#234;&#224; &#239;&#240;&#232; &#238;&#225;&#240;&#224;&#249;&#229;&#237;&#232;&#232; &#234; &#238;&#242;&#239;&#240;&#224;&#226;&#234;&#229; &#239;&#232;&#241;&#252;&#236;&#224;");
function links($msg)
{
echo "<p class=msg><b>".$msg."</b></p>";
echo "<p class=msg><a class=link href=# onClick='history.back()'>&#194;&#229;&#240;&#237;&#243;&#242;&#252;&#241;&#255; &#234; &#239;&#240;&#224;&#226;&#234;&#229; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#255;</a></p>";
exit();
}

include "../util/bottom.php";
?>

задача объяснить мне ошибку почему файлы выбираются но не обрабатываются скриптом и письмо уходит без вложений

сам что то уже потерялся..... :(

P.S.: смысл в том чтобы прикреплять либо *.doc/*.xls либо сканы *.tif<tiff>/*.jpg

-~{}~ 22.02.07 04:44:

Да и еще вариант - есть скрипты для прямой загрузки файлов во временную директорию. Загрузка идет на ура.
Возможно слияние вышеуказанных с этими, чтобы шла выборка загруженных файлов, вложение их в почту, отправка и последующее уничтожение из временной директории?
 

Фанат

oncle terrible
Команда форума
интересно, почему диггеры выбирают сообщения ровно годичной давности?...

-~{}~ 22.02.07 09:37:

Гравицапа
ты ж держишь руку на пульсе, должен уже рефлекс выработаться: красная иконка, а ты эту тему не помнишь - значит, диггеры завелись =)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху