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 .
Как сохранить имя файла?
Еще вопрос : как отправлять ссылки по почте???
// проверяем правильности заполнения с помощью регулярного выражения
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:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- $from_mail = "ivanov@mail.ru";
- $from_name = "Иванов";
- $to = "petrov@mail.ru";
- $subject = "Письмо с вложением";
- $msg = "<h1>Это сообщение в формате HTML</h1>";
- send_mail($to, $from_mail, $from_name, $subject, $msg, $files);
- /*
- $to - адрес получателя письма
- $from_mail - адрес отправителя письма
- $from_name - имя отправителя письма
- $subject - тема письма
- $message - само сообщение в HTML-формате
- $file_name - массив имен файлов, которые надо прикрепить к письму
- */
- function send_mail($to, $from_mail, $from_name, $subject, $message, $file_name)
- {
- $bound = "*****SendMail*****";
- $headers = "From: ".$from_name." <".$from_mail.">\\n";
- // $headers .= "To: $to\\n";
- $headers .= "Subject: $subject\\n";
- $headers .= "Mime-Version: 1.0\\n";
- $headers .= "Content-Type: multipart/mixed; boundary=\\"".$bound."\\"";
- $body = "\\n\\n--$bound\\n";
- $body .= "Content-type: text/html; charset=\"windows-1251\\"\\n";
- $body .= "Content-Transfer-Encoding: quoted-printable\\n\\n";
- $body .= $message;
- // Проверяем, есть ли файлы вложений
- if ( is_array($file_name) )
- {
- foreach ( $file_name as $value )
- {
- if($file = fopen($value,"rb"))
- {
- $body .= "\\n\\n--$bound\\n";
- $body .= "Content-Type: application/octet-stream; ";
- $body .= "Content-Transfer-Encoding:base64\\n";
- $body .= "Content-Disposition:attachment\\n\\n";
- $body .= base64_encode(fread($file,filesize($value)));
- }
- }
- }
- $body .= "\\n\\n--$bound--\\n\\n";
- if( mail($to, $subject, $body, $headers) )
- return true;
- else
- return false;
- };
- ?>