Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, preciso criar um formulário que envie um email com um arquivo em anexo, alguém pode me ajudar?
Eu copiei vários códigos da internet mas não consegui muito sucesso, tô usando o firebug e sempre quando tento mandar o arquivo, ele manda essa mensagem:
Um formulário foi enviado com a codificação windows-1252. Ela não possui todos os caracteres Unicode, portanto os dados do usuário podem ter sido corrompidos. Para evitar este problema, a página deve ser modificada para que o formulário seja enviado com a codificação UTF-8. Isso pode ser feito modificando a codificação da própria página para UTF-8 ou especificando accept-charset=utf-8 no elemento form.
O código é esse
> <?php$arquivo = $_FILES[ 'arquivo' ];
$type = $arquivo[ 'type' ];
/**
* Teu Email
*/
$destinatario = 'teste@linksmonitorados.com.br';
/**
* Assunto
*/
$assunto = 'Anexo de arquivos';
$filename = sprintf( '%s.%s', md5(uniqid().time().$_FILES[ 'name' ]), pathinfo( $arquivo[ 'name' ], PATHINFO_EXTENSION ) );
if( move_uploaded_file( $arquivo[ 'tmp_name' ], 'dir/'.$filename ) ){
$base64 = base64_encode( file_get_contents( 'dir/'.$filename ) );
$boundary = date("dmYhis");
$headers = implode ( "\n", Array( "MIME-Version: 1.0 ",
"Content-Type: multipart/mixed; boundary=\"$boundary\" \r",
"$boundary " ) );
$nome = $_POST[ "nome" ];
$sexo = $_POST[ "sexo" ];
$nascimento = $_POST[ "nascimento" ];
$email = $_POST[ "email" ];
$telefone = $_POST[ "telefone" ];
$conteudo = "--$boundary \n";
$conteudo .= "Content-Type: text/html; charset=\"iso-8859-1\" \n";
$conteudo .= "Content-Transfer-Encoding: 8bits \n\n";
$conteudo .= sprintf( "Nome: %s \n Sexo: %s \n Nascimento: %s \n Email: %s \n Telefone: %s \n",
$nome, $sexo, $nascimento, $email, $telefone );
$conteudo .= "--$boundary \n";
$conteudo .= "Content-Type: $type; name=\"".$filename."\" \n";
$conteudo .= "Content-Transfer-Encoding: base64 \n";
$conteudo .= "Content-Disposition: attachment; filename=\"".$filename."\" \r\n" ;
$conteudo .= "$base64 \n";
$conteudo .= "--$boundary \n";
unlink( 'dir/'.$filename );
if( mail( $destinatario, $assunto, $conteudo, $headers ) ){
echo 'Email Enviado com sucesso';
}else{
echo 'Falha no envio do email';
}
}
?>Carregando comentários...