Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso de ajuda.
Quero enviar um anexo por via email.
Mas tenho um array no php.
E não sei como faço para enviar anexo um ficheiro.
Segue o código:
<?php
/**
* Hotel reservation submit
*/
define('_EMAIL_TO', 'info@desigm.pt'); // your email address where reservation details will be received
define('_EMAIL_SUBJECT', 'Pedido de Orçamento | Desigm'); // email message subject
define('_EMAIL_FROM', $_POST["email"]);
$fields = array(
array('name' => 'name', 'title' => 'Nome', 'valid' => array('require')),
array('name' => 'empresa', 'title' => 'Empresa'),
array('name' => 'email', 'title' => 'Email', 'valid' => array('require')),
array('name' => 'phone', 'title' => 'Telefone', 'valid' => array('require')),
array('name' => 'servico', 'title' => 'Tipo de Serviço', 'valid' => array('require')),array('name' => 'conhe', 'title' => 'Como chegou até nós?', 'valid' => array('require'))
);
$error_fields = array();
$email_content = array();
foreach ($fields AS $field){
$value = isset($_POST[$field['name']])?$_POST[$field['name']]:'';
$title = empty($field['title'])?$field['name']:$field['title'];
$email_content[] = $title.': '.nl2br(stripslashes($value));
$is_valid = true;
$err_message = '';$is_valid = $is_valid && strlen($value) > 0;
$err_message = 'Campo Obrigatório';
break;$is_valid = $is_valid && preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $value);
$err_message = 'Email Obrigatório';
break;break;
}
}
}
if (!$is_valid){
if (!empty($field['err_message'])){
$err_message = $field['err_message'];
}
$error_fields[] = array('name' => $field['name'], 'message' => $err_message);
}
}
if (empty($error_fields)){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = "From: "._EMAIL_FROM."\r\n";
$headers .= "Reply-To: "._EMAIL_FROM."\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
// Send email
mail (_EMAIL_TO, _EMAIL_SUBJECT, implode('<hr>', $email_content), $headers);
echo (json_encode(array('code' => 'success')));
}else{
echo json_encode(array('code' => 'failed', 'fields' => $error_fields));
}Mas não consigo através deste código acrescentar o anexo??
Estude a lógica e implemente no seu, ou utilize-o:
https://gist.github.com/danilowm/1997820
Porém, sugiro utilizar o PHPMailer, para envio de email de modo geral. Com ou sem anexo.
Prezados boa noite.
Estou tendo o mesmo problema, o anexo não vai e somente a informação de celular. Alguém pode dar uma luz do que está errado? Além de enviar o email com/sem anexo, grava no banco de dados.
<?php
header('Content-Type: text/html; charset=utf-8');
// Inclui o arquivo que faz a conexão ao MySQL
include('Connections/commercial.php');
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
// Manipulamos as variáveis para evitar problemas com aspas e outros caracteres protegidos do MySQL
$hoje_tmp = getdate();
$email_from = $_POST["email"];
$cellphone = $_POST["cellphone"];
$consuption = $_POST["consuption"];
$cep = $_POST["cep"];
$product = $_POST["product"];
$roof = $_POST["roof"];
$assunto = $_POST["subject"];
$client = $_POST["name"];
$email = "automatic@automatic.com.br";
//pego os dados enviados pelo formulario
$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;
if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){
$fp = fopen($_FILES["arquivo"]["tmp_name"],"rb");
$anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"]));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
$boundary = "XYZ-" . date("dmYis") . "-ZYX";
$mens = "--$boundary\n";
$mens .= "Content-Transfer-Encoding: 8bits\n";$mens .= "<p>Nome: $client</p>" .
"<p>Cellphone: $cellphone</p>" .
"<p>Consumo: $consuption</p>" .
"<p>CEP: $cep</p>" .
"<p>Telhado: $roof</p>" .
"<p>Produto: $product\n</p>";
$mens .= "--$boundary\n";
$mens .= "Content-Type: ".$arquivo["type"]."\n";
$mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";
$mens .= "Content-Transfer-Encoding: base64\n\n";
$mens .= "$anexo\n";
$mens .= "--$boundary--\r\n";
$headers = "MIME-Version: 1.0\n";
$headers .= "From: \"$name\" <$email_from>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";
$headers .= "$boundary\n";
//envio o email com o anexo
mail($email,$assunto,$mens,$headers);
echo('Enviado com sucesso!');
}
//se não tiver anexo
else{
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: \"$nome\" <$email_from>\r\n";
//envia o email sem anexo
mail($email,$assunto,$cellphone, $headers);
echo('Enviado com sucesso!');
}
$client = mysql_escape_string($client);
$cep = mysql_escape_string($cep);
$email_from = mysql_escape_string($email_from);
$cellphone = mysql_escape_string($cellphone);
$product = mysql_escape_string($product);
// Montamos a consulta SQL
$query1 = "INSERT INTO sales_clients (name, email, cellphone, cep, product, roof, consuption_average) VALUES ('".$client."', '".$email_from."', '".$cellphone."', '".$cep."', '".$product."', '".$roof."', '".$consuption."')";
// Executa a query
$inserir = mysql_query($query1);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tupã</title>
<script type="text/javascript">
window.setTimeout("location.href='index.php';", 2500);
</script>
</head>
<body>
</body>
</html>Abra um novo tópico com sua dúvida.
Para enviar anexos, com a função "mail", somente transformando o mesmo em base64.
Sugiro fortemente utilizar o PHP Mailer.