Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dina de Sousa

Enviar anexo via email

Recommended Posts

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' => 'special-requirements', 'title' => 'Descrição do Serviço'),
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 = '';
if (!empty($field['valid'])){
foreach ($field['valid'] AS $valid) {
switch ($valid) {
case 'require':
$is_valid = $is_valid && strlen($value) > 0;
$err_message = 'Campo Obrigatório';
break;
case 'email':
$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;
default:
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));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para enviar anexos, com a função "mail", somente transformando o mesmo em base64.

Sugiro fortemente utilizar o PHP Mailer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 .= "Content-Type: text/html; charset=\"utf-8\"\n\n"; //plain
$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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.