Envio de anexo via form
Fala Galera, tudo na paz? Espero que sim! =)
Estou precisando montar um form que o usuário escolha o arquivo à ser enviado como anexo de um e-mail. Seguindo este tutorial, montei o script abaixo (ainda sem verificações de segurança, etc).
Funciona e tals, o e-mail chega com o anexo, mas o conteúdo dele (o html com o resto das infos) não é exibido. Se der "Exibir codigo fonte" no e-mail (ou enviar em "text/plain" na linha marcada com **/ X /**) o conteúdo ta lá, apenas não é mostrado.
Script de envio
<?php
# Lé modelo do e-mail
$modelo = '../modelos/cotacao.html';
$fO = fopen($modelo, 'r');
$html = fread($fO, filesize($modelo));
$fC = fclose($fO);
# Substitui os valores do POST no modelo
foreach($_POST as $k=>$v) {
$html = str_replace('#'.$k.'#', nl2br($v), $html);
}
# Pega o anexo
$anexo = $_FILES['cp_arquivo'];
# Faz conexao via ftp
$serv = 'ftp.meusite.com.br';
$login = 'meulogin';
$senha = 'minha_senha';
$dir = 'meu/site/anexos';
$ftpId = ftp_connect($serv);
$ftp_log = ftp_login($ftpId, $login, $senha);
$ftp_ch = ftp_chdir($ftpId, $dir);
# Envia o arquivo para o FTP
$fPut = ftp_put($ftpId, $anexo['name'], $anexo['tmp_name'], FTP_BINARY);
$arq = '../anexos/'.$anexo['name'];
$boundary = strtotime('NOW');
# Infos para o envio do e-mail
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\n";
$headers .= "From:falecom@istrata.com.br\n";
$headers .= "Reply-to:".$_POST['cp_email']."\n";
$assunto = 'Contato através do site';
$destino = 'falecom@istrata.com.br';
$msg = "--" . $boundary . "\n";
$msg .= "Content-Type: text/html; charset=\"utf-8\"\n"; /* X */
$msg .= "Content-Transfer-Encoding: quoted-printable\n\n";
$msg .= $html."\n";
$msg .= "--" . $boundary . "\n";
$msg .= "Content-Transfer-Encoding: base64\n";
$msg .= "Content-Disposition: attachment; filename=\"".$anexo['name']."\"\n\n";
ob_start();
readfile($arq);
$enc = ob_get_contents();
ob_end_clean();
$msg_temp = base64_encode($enc). "\n";
$tmp[1] = strlen($msg_temp);
$tmp[2] = ceil($tmp[1]/76);
for ($b = 0; $b <= $tmp[2]; $b++) {
$tmp[3] = $b * 76;
$msg .= substr($msg_temp, $tmp[3], 76) . "\n";
}
unset($msg_temp, $tmp, $enc);
# Dispara o e-mail
$mail = mail($destino, $assunto, $msg, $headers);
if($mail) {
header('Location:../servicos.php?email=ok');
}else {
header('Location:../servicos.php?email=nook');
}
?>
Agradeço desde já!
Abs
Discussão (9)
Carregando comentários...