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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка E-mail с вложением: переиеновывает файл на свой вкус, и в теме письма русские буквы не читаются.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
PSergeyA
Отправлено: 26 Сентября, 2008 - 03:00:00
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Здравствуйте!
Большая просьба помочь, наверняка многие сталкивались с такой проблеммой как у меня:

1) Прикреплённый файл у меня называется mail.zip (архив, содержит файл mail.php, в котором русский и английский текст).
Он прикрепляетсяи отправляется нормально и доходит, но уже с ругим именем, имя каждый раз разное, "скайнэт" сам его придумывает на свой машинный вкус - например такое: attg1m4w.dat - бессмысленное и всегда .dat, что бы не отправлял.
При этом содержимое архива полностью нормально доходит (mail.php и текст - всё хорошо (хотя я только на одном почтовике проверял)).

2) русские символы в теме письма не читаются, заменяются на крокозябликов или ещё каких животных.

вот код, он вполне рабочий, необходимо только заменить $file_name и $mail_to вверху на ваше, чтобы он выполнился.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP  
  3. $file_name = "mail.zip";  
  4. $theme = "ThemeMy (Тема)";  
  5. $msg = "Сообщение (Subject)";  
  6. $mail_to = "somemail@somname.ru";  // Отправляем почтовое сообщение  
  7. send_mail($mail_to, $theme, $msg, $file_name);   // Вспомогательная функция для отправки почтового сообщения с вложением  
  8.  
  9. function send_mail($to, $theme, $messtxt, $fname) {    
  10.   $fp = fopen($fname,"r");    
  11.   if (!$fp) {      
  12.     print "Файл $fname не может быть прочитан";      
  13.     exit();
  14.   }    
  15.   $file = fread($fp, filesize($fname));    
  16.   fclose($fp);        
  17.   $boundary = "--".md5(uniqid(time())); // генерируем разделитель    
  18.   $headers .= "MIME-Version: 1.0\n";    
  19.   $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
  20.   $multipart .= "--$boundary\n";    
  21.   $kod = 'windows-1251'; // или $kod = 'koi8-r';    
  22.   $thm = $theme;
  23.   $multipart .= "Content-Type: text/plain; charset=$kod\n";    
  24.   $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";    
  25.   $multipart .= "$messtxt\n\n";    
  26.   $message_part = "--$boundary\n";    
  27.   $message_part .= "Content-Type: application/octet-stream\n";    
  28.   $message_part .= "Content-Transfer-Encoding: base64\n";    
  29.   $message_part .= "Content-Disposition: attachment; filename = \"".$fname."\"\n\n";    
  30.   $message_part .= chunk_split(base64_encode($file))."\n";    
  31.   $multipart .= $message_part."--$boundary--\n";    
  32.   if(!mail($to, $thm, $multipart, $headers)) {      
  33.     echo "Письмо не отправилось";      
  34.     exit();
  35.   }
  36. }
  37. ?>
  38.  
 
 Top
PSergeyA
Отправлено: 26 Сентября, 2008 - 05:19:32
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




3)Честно говоря ещё одна проблеммка обнаружилась - почему-то не приходит на Mail.ru, yandex.ru, hotmail.com, gmail.com
только на мою почту (устаовленную в организации, где работаю)

подскажите пожалуйста, что я делаю нетак!
 
 Top
PSergeyA
Отправлено: 26 Сентября, 2008 - 07:42:25
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Ещё задал этот вопрос на другом форуме, там есть ответы.

http://php[dot]ru/forum/viewtopic.php?t=14267
 
 Top
valenok Модератор
Отправлено: 26 Сентября, 2008 - 09:53:34
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




filename = \"".$fname." ...
Посмотрите сами что содержит ваша переменная с названием.
то что phpmailer вам поможет я сомневаюсь
и если отправить письмао в кодировке в которой принимает сервер то вас сотрут из чёрного списка, да и вообще если не в той кодировке то посылать нельзя.

И ещё вряд ли вы в чёрном списке у всех бесплатных почтовых провайдеров.
Проверьте - в gmail приходит ?


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 26 Сентября, 2008 - 14:21:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




А smtp-сервер для отправки Вы используете тот, что у Вашей организации? Если да, то еще вопрос. Если вы отправляете письмо с ящика с Вашей организации на те же mail.ru и др не средствами php, а как обычно, оно доходит?
(Добавление)
Если и оно не доходит, значит почтовый сервер вашей организации в черных списках
(Добавление)
А еще вопрос. Как вы написали здесь 3 сообщения подряд? Улыбка Я если подряд пишу, одно к другому добавляется
 
 Top
PSergeyA
Отправлено: 29 Сентября, 2008 - 10:23:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Valenok:
valenok пишет:
filename = \"".$fname." ...


Переменная $fname, проверил - содержит "mail.zip".
попробовал так filename = \".$fname.\" - без лишних кавычек, но это не помогло.
Если вы имели в виду что переменная с именем архива у меня $file_name а подставляется $fname, то ведь $fname - параметр, а $file_name, подставляется при вызове - тут должно быть правельно.
Напишите пожалуйста в чём ошибка если знаете?
в gmail тоже не доходит.. )
ну ничего, даже если в чёрном списке, значит надо писать в службу потдержки, и видимо подключать phpmailer, чтобы снова в ч.списко не попасть.

Champion:
smtp-сервер тот )
а честно говоря обычно оно ещё не разу не дошло : )
это моя первая задача по отправке почтой на php и не с чем сравнить, не было у меня удачной отправки пока.
3 сообщения подряд - О-о-о-о... это очень сложно, лучше не объяснять, скажу только в кратце, что нужно быть Великим Сверх-Программистом чтобы такое смочь : )
но я к ним не отношусь, поэтому у меня это как-то случайно получилось : ) не знаю как : )
 
 Top
Ыыы
Отправлено: 29 Сентября, 2008 - 11:10:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008  
Откуда: Россия, Хабаровск


Помог: 0 раз(а)




Просто между сообщениями интервал ~2 часа, вот двиг пхп.су их и не соединяет :)
 
 Top
Champion Супермодератор
Отправлено: 29 Сентября, 2008 - 11:28:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




PSergeyA пишет:
а честно говоря обычно оно ещё не разу не дошло : )
это моя первая задача по отправке почтой на php и не с чем сравнить, не было у меня удачной отправки пока.

Вы меня не так поняли. Я имел в виду, если письмо отправть с почты вашей организации не через php, а как обычные люди делают, письмо на mail.ru отправится?
 
 Top
PSergeyA
Отправлено: 30 Сентября, 2008 - 03:04:42
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Да, попробовал отправить обычным способом на mail.ru - письмо доходит.
Хотя у нас стоит почтовый клиент, наверно как-то по-разному отправляется на php и так.
 
 Top
valenok Модератор
Отправлено: 30 Сентября, 2008 - 10:15:16
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function xmail($to, $subj, $text, $filename , $from='') {
  4. $f         = fopen($filename,"rb");
  5. $un        = strtoupper(uniqid(time()));
  6. $head      = "From: $from\n";
  7. $head     .= "To: $to\n";
  8. $head     .= "Subject: $subj\n";
  9. $head     .= "X-Mailer: PHPMail Tool\n";
  10. $head     .= "Reply-To: $from\n";
  11. $head     .= "Mime-Version: 1.0\n";
  12. $head     .= "Content-Type:multipart/mixed;";
  13. $head     .= "boundary=\"----------".$un."\"\n\n";
  14. $zag       = "------------".$un."\nContent-Type:text/html;\n";
  15. $zag      .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
  16. $zag      .= "------------".$un."\n";
  17. $zag      .= "Content-Type: application/octet-stream;";
  18. $zag      .= "name=\"".basename($filename)."\"\n";
  19. $zag      .= "Content-Transfer-Encoding:base64\n";
  20. $zag      .= "Content-Disposition:attachment;";
  21. $zag      .= "filename=\"".basename($filename)."\"\n\n";
  22. $zag      .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n";
  23.  
  24. return @mail("$to", "$subj", $zag, $head);
  25. }


-----
Truly yours, Sasha.
 
My status
 Top
PSergeyA
Отправлено: 01 Октября, 2008 - 05:04:05
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




valenok,
спасибо за код, мне он пригодится.
но проблемма похоже как говорили мне уже - не в коде а в "месте" с корого отправляю, у нас на сервере. Об этом и у нас уже говорят, что видимо делают с сайта нашей организации рассылки и уже у всех бесплатных почтовых серверах мы в спам-листе.
phpmailer удалось запустить под php4 (который у нас стоит) - хорошо отправляет, только неизвестных животных (крокожаб, крокозябликов и т.п.) вместо русских букв пишет, пока не знаю как с этим справиться.
Хотя phpmailer хвалят за то что он умеет определять кодировку на сервере получателе, а потом отправляет письмо... но у меня он почему-то несумел.
Вы не знаете, как phpmailer относится к русскому тексту?
 
 Top
Lostoffuture
Отправлено: 01 Октября, 2008 - 10:36:26
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2008  
Откуда: обнинск


Помог: 0 раз(а)

[+]


Доброгово времени суток, у меня возникла проблема с отправкой письма через php.. при отсылки письма выдает ощибку
PHP:
скопировать код в буфер обмена
  1. Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in G:\web\apache\localhost\www\reg\addNewUser.php on line 158


сервер стоит под виндой на локальной машине, связка apch2.2+php5+mysql5.0 ругается на то что не может отправить и типо посмотрите ваши настройки php.ini ... что делать???


-----
Не пользуйтесь денверами, делайте сами связки)))))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB