PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
vanicon
Отправлено: 21 Ноября, 2011 - 20:29:22
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010
Откуда: Самара
Помог: 17 раз(а)
Есть форма отправки писем, где можно прикрепить файл а можно и не прикреплять...
Искал в интернете и на форуму смотрел пользовательские функции, пробовал их но ни что то не работают...
Написал свою, и она почему то не отправляет письма с вложением фалов, а простые отправляет. Вот сама функция:
PHP:
скопировать код в буфер обмена
function XMail( $komu_email , $komu_name , $theme , $text , $filename ) {
$komu = '' . $komu_name . ' <' . $komu_email . '>' ;
$headers = "MIME-Version: 1.0\r \n " ;
if ( $filename <> null ) {
$filename_path = dirname ( __FILE__ ) . '/files/' . $filename ; $headers .= "Content-type: multipart/mixed; boundary='$bound '\r \n " ;
$body = "--$bound " ;
$body .= "Content-type: text/html; charset=windows-1251\r \n " ;
$body .= "$text \r \n " ;
$body .= "--$bound " ;
$body .= "Content-Type: application/octet-stream;name='file$format '" ;
$body .= "$str_file \r \n " ;
$body .= "$bound --" ;
}
else {
$headers .= "Content-type: text/html; charset=windows-1251\r \n " ;
$body = $text ;
}
return mail ( $komu , $theme , $body , $headers ) ; }
Подскажите пожалуйста, что не так...
-----Так было, так есть и так будет
vanicon
Отправлено: 22 Ноября, 2011 - 10:03:55
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010
Откуда: Самара
Помог: 17 раз(а)
Переделал код но все ровно приходит тока пустое сообщение
PHP:
скопировать код в буфер обмена
function XMail( $komu_email , $komu_name , $theme , $text , $filename ) {
$komu = '' . $komu_name . ' <' . $komu_email . '>' ;
$headers = "MIME-Version: 1.0\r \n " ;
if ( $filename <> null ) {
$filename_path = dirname ( __FILE__ ) . '/files/' . $filename ; $headers .= "Content-type: multipart/mixed; boundary='$bound '\r \n " ;
$body = "--$bound " ;
$body .= "Content-type: text/html; charset=windows-1251\r \n " ;
$body .= "$text \r \n " ;
$body .= "--$bound " ;
$body .= "Content-Type: application/octet-stream;name='file$format '" ;
$file = fopen ( $filename_path , 'r' ) ; $body .= "$str_file \r \n " ;
$body .= "$bound --" ;
}
else {
$headers .= "Content-type: text/html; charset=windows-1251\r \n " ;
$body = $text ;
}
return mail ( $komu , $theme , $body , $headers ) ; }
-----Так было, так есть и так будет
EuGen
Отправлено: 22 Ноября, 2011 - 10:21:47
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007
Откуда: Berlin
Помог: 707 раз(а)
http://php.net/manual/en/function.mail.php
PHP:
скопировать код в буфер обмена
function multi_attach_mail( $to , $files , $sendermail ) {
// email fields: to, from, subject, and so on
$from = "Files attach <" . $sendermail . ">" ;
$subject = date ( "d.M H:i" ) . " F=" . count ( $files ) ; $message = date ( "Y.m.d H:i:s" ) . "\n " . count ( $files ) . " attachments" ; $headers = "From: $from " ;
// boundary
$mime_boundary = "==Multipart_Boundary_x{$semi_rand} x" ;
// headers for attachment
$headers .= "\n MIME-Version: 1.0\n " . "Content-Type: multipart/mixed;\n " . " boundary=\" {$mime_boundary} \" " ;
// multipart boundary
$message = "--{$mime_boundary} \n " . "Content-Type: text/plain; charset=\" iso-8859-1\" \n " .
"Content-Transfer-Encoding: 7bit\n \n " . $message . "\n \n " ;
// preparing attachments
for ( $i = 0 ; $i < count( $files ) ; $i ++ ) {
$message .= "--{$mime_boundary} \n " ;
$fp = @ fopen ( $files [ $i ] , "rb" ) ; $message .= "Content-Type: application/octet-stream; name=\" " . basename ( $files [ $i ] ) . "\" \n " . "Content-Description: " . basename ( $files [ $i ] ) . "\n " . "Content-Disposition: attachment;\n " . " filename=\" " . basename ( $files [ $i ] ) . "\" ; size=" . filesize ( $files [ $i ] ) . ";\n " . "Content-Transfer-Encoding: base64\n \n " . $data . "\n \n " ;
}
}
$message .= "--{$mime_boundary} --" ;
$returnpath = "-f" . $sendermail ;
$ok = @ mail ( $to , $subject , $message , $headers , $returnpath ) ; if ( $ok ) { return $i ; } else { return 0 ; }
}
-----Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
EuGen
Отправлено: 22 Ноября, 2011 - 12:20:53
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007
Откуда: Berlin
Помог: 707 раз(а)
Верно, за исключением главного - содержимое файла эта функция все-таки добавляет к письму, читая файл:
EuGen пишет: $fp = @fopen($files[$i],"rb");
$data = @fread($fp,filesize($files[$i]));
@fclose($fp);
$data = chunk_split(base64_encode($data));
и добавляя:
EuGen пишет: $message .= "--{$mime_boundary}\n";
$message .= "Content-Type: application/octet-stream; name=\"".basename($files[$i])."\"\n" .
"Content-Description: ".basename($files[$i])."\n" .
"Content-Disposition: attachment;\n" . " filename=\"".basename($files[$i])."\"; size=".filesize($files[$i]).";\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
(в теле цикла).
-----Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
vanicon
Отправлено: 22 Ноября, 2011 - 12:56:27
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010
Откуда: Самара
Помог: 17 раз(а)
Исправил, но все ровно не получается отправить:
PHP:
скопировать код в буфер обмена
function XMail( $komu_email , $komu_name , $theme , $text , $filename ) {
$komu = '' . $komu_name . ' <' . $komu_email . '>' ;
$headers = "MIME-Version: 1.0\r \n " ;
if ( $filename <> null ) {
$filename_path = dirname ( __FILE__ ) . '/files/' . $filename ; $headers .= "Content-type: multipart/mixed; boundary='$bound '\r \n " ;
$body = "--$bound " ;
$body .= "Content-type: text/html; charset=windows-1251\r \n " ;
$body .= "$text \r \n " ;
$body .= "--$bound " ;
$body .= "Content-Type: application/octet-stream;name='file$format '" ;
$file = fopen ( $filename_path , 'rb' ) ; $body .= "Content-Description: " . basename ( 'file' . $format ) ; $body .= "Content-Disposition: attachment; filename='" . basename ( 'file' . $format ) . "'; size=" . filesize ( $filename_path ) ; $body .= "Content-Transfer-Encoding: base64\n \n " . $str_file . "\n \n " ;
$body .= "$bound --" ;
}
else {
$headers .= "Content-type: text/html; charset=windows-1251\r \n " ;
$body = $text ;
}
return mail ( $komu , $theme , $body , $headers ) ; }
-----Так было, так есть и так будет
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB