Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Отправка письма с вложением
Форумы портала PHP.SU » PHP » Программирование на PHP » Отправка письма с вложением

Страниц (1): [1]
 

1. olga - 04 Июня, 2007 - 13:58:00 - перейти к сообщению
Добрый день!!! У меня отправляется письмо с вложением по e-mail, но приходит файл - Untitled.bin , который скачивается как неизвестный файл. В основном мне нужен формат .pdf. Что нужно сделать, приходил файл нужного фармата и снужным именем?
2. evgenijj - 04 Июня, 2007 - 16:17:31 - перейти к сообщению
olga пишет:
Добрый день!!! У меня отправляется письмо с вложением по e-mail, но приходит файл - Untitled.bin , который скачивается как неизвестный файл. В основном мне нужен формат .pdf. Что нужно сделать, приходил файл нужного фармата и снужным именем?

Выкладываем исходный код - будем говорить.
3. olga - 04 Июня, 2007 - 16:23:59 - перейти к сообщению
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}$/i", $_POST['mail_to']))
exit("Введите адрес в виде somebody@server.com");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
$picture = "";
$tmp_name=korfin.pdf;
// Каталог, в который мы будем принимать файл:
$uploaddir ="/";
$mail_file = $uploaddir.basename($_FILES['mail_file']['name']);

// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
if (copy($_FILES['mail_file']['tmp_name'], $mail_file)){ $picture = $mail_file; }
}
$thm = $_POST['mail_subject'];
$msg = $_POST['mail_msg'];
$mail_to = $_POST['mail_to'];
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $msg);
else send_mail($mail_to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $thm, $html, $mail_file)
{
$fp = fopen($mail_file,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($mail_file));
fclose($fp);

$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers .= "MIME-Version: 1.0n";
$headers .="Content-Type: multipart/mixed ; boundary="$boundary"n";

$multipart .= "--$boundaryn";
$kod ='windows-1251'; // 'koi8-r'; // или $kod =
$multipart .= "Content-Type: text/html; charset=$kodn";
$multipart .= "Content-Transfer-Encoding: Quot-Printednn";
$multipart .= "$htmlnn";

$message_part = "--$boundaryn";
$message_part .= "Content-Type: application/pdfn"; $message_part .= "Content-Transfer-Encoding: base64n";
$message_part .= "Content-Disposition: attachment; filename = "".$mail_file.""nn";
$message_part .= chunk_split(base64_encode($file))."n";
$multipart .= $message_part."--$boundary--n";

if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
application/pdfn"; -формат pdf .
Как сохранить имя файла?
Еще вопрос : как отправлять ссылки по почте???
4. evgenijj - 04 Июня, 2007 - 23:04:14 - перейти к сообщению
Вот простенькая функция для отправки письма с вложением
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $from_mail = "ivanov@mail.ru";
  4. $from_name = "Иванов";
  5. $to = "petrov@mail.ru";
  6. $files = array("1.gif", "2.gif");
  7.  
  8. $subject = "Письмо с вложением";
  9. $msg = "<h1>Это сообщение в формате HTML</h1>";
  10.  
  11. send_mail($to, $from_mail, $from_name, $subject, $msg, $files);
  12.  
  13. /*
  14. $to - адрес получателя письма
  15. $from_mail - адрес отправителя письма
  16. $from_name - имя отправителя письма
  17. $subject - тема письма
  18. $message - само сообщение в HTML-формате
  19. $file_name - массив имен файлов, которые надо прикрепить к письму
  20. */
  21. function send_mail($to, $from_mail, $from_name, $subject, $message, $file_name)
  22. {
  23.     $from_name = "=?koi8-r?B?".base64_encode(convert_cyr_string($from_name, "w","k"))."?=";
  24.     $bound = "*****SendMail*****";
  25.     $headers = "From: ".$from_name." <".$from_mail.">\\n";
  26.     // $headers .= "To: $to\\n";
  27.     $headers .= "Subject: $subject\\n";
  28.     $headers .= "Mime-Version: 1.0\\n";
  29.     $headers .= "Content-Type: multipart/mixed; boundary=\\"".$bound."\\"";
  30.     $body = "\\n\\n--$bound\\n";
  31.     $body .= "Content-type: text/html; charset=\"windows-1251\\"\\n";
  32.    $body .= "Content-Transfer-Encoding: quoted-printable\\n\\n";
  33.    $body .= $message;
  34.    // Проверяем, есть ли файлы вложений
  35.    if ( is_array($file_name) )
  36.    {
  37.        foreach ( $file_name as $value )
  38.        {
  39.            if($file = fopen($value,"rb"))
  40.            {
  41.                $body .= "\\n\\n--$bound\\n";
  42.                $body .= "Content-Type: application/octet-stream; ";
  43.                $body .= "name=\"".basename($value)."\\"\\n";
  44.                $body .= "Content-Transfer-Encoding:base64\\n";
  45.                $body .= "Content-Disposition:attachment\\n\\n";
  46.                $body .= base64_encode(fread($file,filesize($value)));
  47.            }
  48.        }
  49.    }
  50.    $body .= "\\n\\n--$bound--\\n\\n";
  51.    
  52.    if( mail($to, $subject, $body, $headers) )
  53.        return true;
  54.    else
  55.        return false;
  56. };
  57. ?>
  58.  
5. -SCHATTEN- - 05 Июня, 2007 - 20:10:58 - перейти к сообщению
Ну вот почему никто не заглядывает в раздел "пользовательские функции" там всё это есть.

 

Powered by ExBB FM 1.0 RC1