Электронное письмо на Perl, Unix: проблема с загрузкой csv в браузере

#perl #hyperlink

#perl #гиперссылка

Вопрос:

У меня есть это:

     open(MAIL,"|/usr/sbin/sendmail -t");
       ## Mail Header
       print MAIL "To: $GLOB_OPT{email}n";
       print MAIL "From: $GLOB_OPT{from}n";
       print MAIL "Subject: $GLOB_OPT{sub}n";
       print MAIL qq|Content-Type: text/html; charset=us-asciin|;
       print MAIL qq|Content-Transfer-Encoding: 7bitn|;
       print MAIL qq|MIME-Version: 1.0nn|;
       print MAIL qq|<h3>Download File :</h3><br>|;
       print MAIL qq|<a href="$GLOB_OPT{html}" rel="nofollow" target="_blank">Click Here</a>|;
    close(MAIL);
  

Я хочу отправить гиперссылку пользователю, чтобы они могли загрузить файл csv по пути $ GLOB_OPT {html}.

Когда я открываю ссылку в своем электронном письме, она открывает csv в браузере. Я хочу, чтобы вместо этого браузер загрузил файл. Что я могу сделать?

Ответ №1:

Попробуйте использовать content-disposition в заголовках http на стороне веб-сервера. Это работает даже с .htaccess.

Насколько я понимаю, способ отправки электронного письма имеет мало общего с выбором сохранения / отображения в браузере.

Комментарии:

1. Действительно. Ссылка есть ссылка, и ничто в ней не может сказать «Загрузите это». Выбор содержимого — это правильный путь.

2. @David-Dorward: Я думаю, они что-то пропустили в стандарте, например <a href="http://..." whattodo="save"> .

Ответ №2:

Не используйте системную sendmail команду. Вместо этого используйте MIME::Облегченный модуль.

У них есть пример кодирования, который в значительной степени делает именно то, что вы хотите сделать.

Таким образом, вы не зависите от внешней команды, которая может работать, а может и не работать (в зависимости от системы и ее конфигурации).

Ответ №3:

Вы могли бы вывести CSV с помощью скрипта, который отправляет браузеру первый mime-заголовок «application / octet-stream» вместо MIME-типа по умолчанию, отправляемого apache (или используемым сервером). Вы также можете настроить сервер на отправку заголовка самостоятельно, связав расширение .csv с типом mime «application / octet-stream». смотрите также Документы apache

Комментарии:

1. итак, в принципе, я не могу дать прямую ссылку на csv. Я должен отправить другому скрипту, который выводит csv и изменяет на что-то вроде text / csv …

2. Вы можете. смотрите вторую ссылку. Итак, в вашем случае это будет что-то вроде «AddType application / octet-stream .csv» в файле.htacces в каталоге, где находятся ваши CSV-файлы.