Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2015, 17:03   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Письмо с вложением и лишний файл *.txt

Уважаемые, подскажите, откуда берется один лишний файл *.txt причем пустой при отправке письма с вложением.

Код:
$hash = md5(date('r', time())); 

$headers = "MIME-Version: 1.0";

$headers .= "\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$hash."\"\n\n"; 
 
$message = '--PHP-mixed-'.$hash."\n";

$message .= 'Content-Type: text/html; charset="utf-8"'."\n";

$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";

$message .= $content."\n"; 

$message .= '--PHP-mixed-'.$hash."\n";

$counter = count($_FILES);
$i = 0;

foreach($_FILES as $file)
{

if(empty($file['tmp_name']))
{ continue;  $i++; }

$attachment = chunk_split(base64_encode(file_get_contents($file['tmp_name'])));

$message .= 'Content-Type: application/octet-stream; name="'.$file['name'].'"'."\n"; 

$message .= 'Content-Transfer-Encoding: base64'."\n"; 

$message .= 'Content-Disposition: attachment'."\n\n";

$message .= $attachment."\n";

if($i < $counter)
{
$message .= '--PHP-mixed-'.$hash."\n";
}

$i++;

}

mail( $to, $subject, $message, $headers );
Голова уже кипит ...
L6go1as вне форума Ответить с цитированием
Старый 04.06.2015, 09:36   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

зачем все эти выкрутасы с счетчиком, инкрементом итд..... мож так проще быдет и правильнее?
Код:
foreach($_FILES as $file)
{
  if(!empty($file['tmp_name']))
    {
      $attachment = chunk_split(base64_encode(file_get_contents($file['tmp_name'])));
      $message .= 'Content-Type: application/octet-stream; name="'.$file['name'].'"'."\n"; 
      $message .= 'Content-Transfer-Encoding: base64'."\n"; 
      $message .= 'Content-Disposition: attachment'."\n\n";
      $message .= $attachment."\n";
      $message .= '--PHP-mixed-'.$hash."\n";
  }
}
ADSoft вне форума Ответить с цитированием
Старый 04.06.2015, 10:18   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
зачем все эти выкрутасы с счетчиком, инкрементом итд..... мож так проще быдет и правильнее?
Можно и твой вариант, но по сути это ничего не меняет (имхо).

Счетчик я повесил из соображений, что в последней итерации добавляется
Код:
$message .= '--PHP-mixed-'.$hash."\n";
и может быть почта думает что это начало нового файла (как раз пустого), а не конец предыдущего.

Таким образом я пытался избавиться от пустого приходящего файла ATT***.txt, который приходит вместе с вложениями.

А какие ни будь думы по поводу приходящего файла есть ? Интересно откуда он берется.
L6go1as вне форума Ответить с цитированием
Старый 04.06.2015, 10:46   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

ну в цикле вводи на экран имена фалов - так и поймешь )
ADSoft вне форума Ответить с цитированием
Старый 04.06.2015, 13:45   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от L6go1as Посмотреть сообщение
ATT***.txt, который приходит вместе с вложениями.
А какие ни будь думы по поводу приходящего файла есть ? Интересно откуда он берется.
По запросу типа «att***.txt» нагуглилось:
ATT*****.txt file in email attachments
Q: Why is Exchange creating ATT00001 attachments?
Exchange: Attachments Gets Converted to ATT###.txt
What Is an ATT Attachment?
Weird ATT****.txt attachments when sending email
Andkorol вне форума Ответить с цитированием
Старый 04.06.2015, 17:20   #6
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Увы решения данной проблемы я так и не нашел ...

Все что нашел так вот это:

Код:
The ATT files are error files and do not carry any known viruses.
L6go1as вне форума Ответить с цитированием
Старый 04.06.2015, 17:34   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
В этих двух ссылках описаны основные причины, по которым во вложениях появляется этот дополнительный файл.
Разобравшись с этими причинами – вполне возможно попробовать избавиться от этого файла.
Andkorol вне форума Ответить с цитированием
Старый 04.06.2015, 18:03   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Это файлы ошибок, а появляются они так как у вас не правильно прописан хедер.
Вам надо задать через тайм несколько контент-типов: общий миксед, для текста plain / html и для файла octet-stream.

при таком раскладе, все прописывается в хедер,поле message остается пустым, или можете также в хедер написать только то, что контент смешанный - mixed, а для message по аналогии header написать 2 типа контента разделитель, допустим '--' . md5(uniqid(time()));

Последний раз редактировалось uberchel; 04.06.2015 в 18:07.
uberchel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделавание кода на считывание из файла в файл output.txt input.txt !!! airesjke Помощь студентам 0 29.05.2013 14:07
[WinAPI] Как отправить письмо с вложением? Ёжик в тумане Win Api 5 04.02.2012 18:08
Как прочесть txt файл www.site.ru/info.txt BR17UY Работа с сетью в Delphi 1 16.04.2007 13:01