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

Форум PHP

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

 

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

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

тема: отправка письма с аттачем с сервера
 
 автор: pav   (15.09.2006 в 13:10)   письмо автору
 
 

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

<?

class mime_mail {
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;

/*
* void mime_mail()
* class constructor
*/

function mime_mail() {
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}

/*
* void add_attachment(string message, [string name], [string ctype])
* Add an attachment to the mail object
*/

function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts[] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}

/*
* void build_message(array part=
* Build message parts of a multipart mail
*/

function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}

/*
* void build_multipart()
* Build a multipart mail
*/

function build_multipart() {
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";

for($i=sizeof($this->parts)-1; $i>=0; $i--) {
$multipart .= "\n".$this->build_message($this->parts[$i])."--$boundary";
}

return $multipart .= "--\n";
}

/*
* string get_mail()
* returns the constructed mail
*/

function get_mail($complete = true) {
$mime = "";
if (!empty($this->from))
$mime .= "From: ".$this->from."\n";
if (!empty($this->headers))
$mime .= $this->headers."\n";

if ($complete) {
if (!empty($this->to))
$mime .= "To: ".$this->to."\n";
if (!empty($this->subject))
$mime .= "Subject: ".$this->subject."\n";
}

if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain");

$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
return $mime;
}

/*
* void send()
* Send the mail (last class-function to be called)
*/

function send() {
$mime = $this->get_mail(false);
mail($this->to, $this->subject, "", $mime);
}

}; // end of class

//Теперь отправка письма с аттачментом



$fd = fopen($filename, "r");
$data = fread($fd, filesize($filename));
fclose($fd);

$mail = new mime_mail;
$mail->from = "name@mail.ru";
$mail->to = "name1@mail.ru";
$mail->subject = "Email Subject";
$mail->body = "The body of the email would go here and can span multiple lines.";

$mail->add_attachment($data, $filename, $content_type);
$mail->send();



?>

нужно кудато вмостить имя файла и ещё некоторые данные но уменя чтото не получается
help

   
 
 автор: pav   (15.09.2006 в 16:45)   письмо автору
 
   для: pav   (15.09.2006 в 13:10)
 

up

   
 
 автор: Саня   (15.09.2006 в 17:42)   письмо автору
 
   для: pav   (15.09.2006 в 16:45)
 

Вам сюда: http://www.softtime.ru/scripts/mailattach.php

   
 
 автор: pav   (15.09.2006 в 19:12)   письмо автору
 
   для: Саня   (15.09.2006 в 17:42)
 

там аттач прикрепляется с локального места на компьютере а мне нужно с хостинга, файл лежит в тойже директории что и скрипт

   
 
 автор: cheops   (15.09.2006 в 21:53)   письмо автору
 
   для: pav   (15.09.2006 в 19:12)
 

В приведённом, Саней скрипте имеется функция
<?php
send_mail
($to$thm$html$path);
?>

$path - это путь на хостинге, просто возьмите функцию и передавайте ей параметры, без загрузки файла на сервер.

   
 
 автор: EXP   (16.09.2006 в 12:47)   письмо автору
 
   для: cheops   (15.09.2006 в 21:53)
 

У меня почему-то приходит просто тема и внутри к письму прикреплён файл Untitled.bin , правда я переделывал помелочи. Вообще так работает?
подправка
Вообще-то я $path потерял из filename . Щас, буду пробовать.

   
 
 автор: EXP   (16.09.2006 в 22:41)   письмо автору
 
   для: EXP   (16.09.2006 в 12:47)
 

Всёравно Untitle.bin вместо img.gif. у меня $path=papka/img.gif basename() тоже пробовал
<?   $boundary "--".md5(uniqid(time()));
// генерируем разделитель

$headers .= "MIME-Version: 1.0\n";
 

$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$kod 'koi8-r';
$multipart .= "Content-Type: text/html; charset=$kod\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";  $multipart .= "$html\n\n";
$message_part "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
$multipart .= $message_part ."--$boundary--\n";

if(!
mail($to$sub$multipart$headers))
{ echo  
"письмо не отправлено";
exit();
} }
?>
может дело в шапке?

   
 
 автор: cheops   (17.09.2006 в 17:20)   письмо автору
 
   для: EXP   (16.09.2006 в 22:41)
 

А исходный код по ссылке http://www.softtime.ru/scripts/mailattach.php у вас работает?

   
 
 автор: EXP   (17.09.2006 в 22:10)   письмо автору
 
   для: cheops   (17.09.2006 в 17:20)
 

Нет возможности проверить , компа нету (; Motorola c380 & OperaMini . у меня файл сначала закачивается на сервер а потом посылается, но точно он приходит, по размеру видно, только названия нет, даже в инфах о сообщении 'на мэйл.ру', пробовал даже в код вписать. А может от SMPT зависит.

   
 
 автор: cheops   (18.09.2006 в 11:21)   письмо автору
 
   для: EXP   (17.09.2006 в 22:10)
 

Лучше используйте функцию
<?php
  
function send_mail($to$thm$html$path
  { 
    
$fp fopen($path,"r"); 
    if (!
$fp
    { 
      print 
"Файл $path не может быть прочитан"
      exit(); 
    } 
    
$file fread($fpfilesize($path)); 
    
fclose($fp); 
    
    
$boundary "--".md5(uniqid(time())); // генерируем разделитель 
    
$headers .= "MIME-Version: 1.0\n"
    
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"
    
$multipart .= "--$boundary\n"
    
$kod 'koi8-r'// или $kod = 'windows-1251'; 
    
$multipart .= "Content-Type: text/html; charset=$kod\n"
    
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"
    
$multipart .= "$html\n\n"

    
$message_part "--$boundary\n"
    
$message_part .= "Content-Type: application/octet-stream\n"
    
$message_part .= "Content-Transfer-Encoding: base64\n"
    
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n"
    
$message_part .= chunk_split(base64_encode($file))."\n"

    
$multipart .= $message_part."--$boundary--\n"

    if(!
mail($to$thm$multipart$headers)) 
    { 
      echo 
"К сожалению, письмо не отправлено"
      exit(); 
    } 
  } 
?>

Она отлажена, а путь к файлу нужно просто указать в качестве четвёртого параметра функции.

   
Rambler's Top100
вверх

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