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 ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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