/*------------------------------------------------*\ email() -> Classe para envio de emails com múltiplos anexos. Autor: Cau Guanabara Data: julho/agosto de 2003 Precisei criar um script que enviasse emails com mais de 1 arquivo em anexo, procurei pela internet afora e não achei nenhum script pronto que eu conseguisse usar - talvez por ignorância minha (!?). Bem, resolvi pesquisar e escrever o script eu mesmo, e depois de muita ralação, entendi como a coisa funcionava - mas cheguei à conclusão que fazer uma classe seria mais inteligente, pois poderia usá-la em qualquer outro script. A classe email() manda mensagens em formato MIME, com o corpo em HTML e em texto plano. Isso é uma limitação, pois não se pode enviar uma mensagem apenas em texto plano... A estrutura da classe foi montada de forma a atender à minha nescessidade no momento em que a escrevi, trabalhar com múltiplos anexos: usando variáveis de sessão para armazenar os anexos entre uma e outra chamada ao programa, a classe oferece métodos para anexar ou desanexar um arquivo e para recuperar os nomes dos arquivos atachados no momento, para mostrar ao usuário. Ao anexar um arquivo, você pode receber a tratar o arquivo enviado pelo usuário, mandando para o método attach() os três parâmetros que ele espera: o nome, o tipo e o conteúdo deste arquivo - ou usar o método prepare_att(), enviando diretamente o array $_FILES['nome_do_campo_file'] e a URL do diretório para os arquivos temporários criados (e deletados) durante o processo. Se não há intenção de modificar os dados enviados pelo usuário, use o método prepare_att(). Este script foi desenvolvido e testado apenas em RedHat - Linux, mas como uso a função mail() para o envio, acredito que não haverá problemas em outras plataformas. Exemplo: O arquivo 'mandamail.php', incluído neste pacote é um exemplo do uso da classe para enviar emails com vários anexos, de formatos variados. Lá dá para entender a lógica que encontrei para anexar e desanexar arquivos ao email antes de enviá-lo de fato. Por favor... Se você modificar o script de alguma forma (há muitas melhorias possíveis), não deixe de entrar em contato através do email cau@mplink.com.br, vou gostar de ver meu script melhorado! Para poder enviar anexos grandes sem ter problemas no upload dos arquivos, não deixe de configurar as diretivas listadas abaixo ---------------------------------------------------- >> diretivas do php.ini: file_uploads -> Permite ou não upload de arquivos HTTP. upload_tmp_dir -> O diretório temporário utilizado para armazenar arquivos quando realizando o upload de arquivos. Ele precisa ter permissão de escrita para qualquer usuário que for rodar o PHP. Se não for especificado, o PHP utilizará o default do sistema. upload_max_filesize -> O tamanho máximo de um arquivo para upload. post_max_size -> Configura o tamanho máximo dos dados postados. Esta configuração também afeta o upload de arquivos. Para receber arquivos grandes, esse valor precisa ser maior que upload_max_filesize. Se o limite de memória estiver ativado em seu script de configuração, memory_limit também afeta o upload de arquivos. Falando diretamente, memory_limit precisa ser maior que post_max_size. memory_limit -> Configura a quantidade máxima de memória, em bytes, que um script poderá alocar. Isto ajuda a prevenir que scripts mal escritos acabem com toda a memória disponível do servidor. Note que você pode configurá-la para -1 se não quiser impor nenhum limite para a utilização da memória. >> Se você usa Apache 1.3.2 ou superior rodando em Linux, redefina em '/etc/httpd/conf.d/php.conf' a diretiva 'LimitRequestBody': LimitRequestBody -> Limita a quantidade de bytes que poderá ser manipulada por um script PHP. Padrão = 512K \*------------------------------------------------*/