Advertisement
Guest User

Untitled

a guest
Aug 18th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', '1');
  4. require_once 'phpmailer/PHPMailerAutoload.php';
  5.  
  6. $config = array(
  7. 'smtp' => array(
  8. 'host' => 'ssl://smtp.host.com',
  9. 'port' => 465,
  10. 'username' => 'nome@dominio.com.br',
  11. 'password' => 'senha',
  12. ),
  13. 'campos' => array(
  14. 'nome' => array('nome' => 'Nome', 'obrigatorio' => true),
  15. 'email' => array('nome' => 'Email', 'obrigatorio' => true),
  16. 'telefone' => array('nome' => 'Telefone', 'obrigatorio' => false),
  17. 'empresa' => array('nome' => 'Empresa', 'obrigatorio' => false),
  18. 'uf' => array('nome' => 'UF', 'obrigatorio' => true),
  19. 'cidade' => array('nome' => 'Cidade', 'obrigatorio' => true),
  20. 'medidas' => array('nome' => 'Medidas', 'obrigatorio' => false),
  21. 'quantidade' => array('nome' => 'Quantidade', 'obrigatorio' => false),
  22. 'linha-de-preferencia' => array('nome' => 'Linha de preferência', 'obrigatorio' => false),
  23. 'msg' => array('nome' => 'Mensagem', 'obrigatorio' => true)
  24. ),
  25. 'envio' => array(
  26. 'destinatarios' => array('destinatario@dominio.com.br'),
  27. 'destinatariosOculto' => array('destinatario-oculto@dominio.com.br'),
  28. 'assunto' => 'Assunto do Email'
  29. )
  30. );
  31.  
  32. // validaCampos - Valida se os campos obrigatórios foram penchidos corretamente
  33. function validaCampos($campos){
  34. foreach($campos as $key => $campo) {
  35. if($campo['obrigatorio'] && (!isset($_POST[$key]) || $_POST[$key] == '') ){
  36. return false;
  37. }
  38. }
  39. return true;
  40. }
  41.  
  42. // response - Retorna o usuário para url principal com uma msg de erro
  43. function response($status, $msg){
  44. header("Location: ../index.html?contato=".$status."&msg=".$msg."&v=2");
  45. exit;
  46. }
  47.  
  48. // generateBodyMail - Gera o corpo do email com base nos campos do array
  49. function generateBodyMail($campos){
  50. $body = '';
  51. foreach($campos as $key => $campo) {
  52. if(isset($_POST[$key]) && $_POST[$key] != ''){
  53. $body .= $campo['nome'] . ": " . $_POST[$key] . "\r\n";
  54. }
  55. }
  56. return $body;
  57. }
  58.  
  59. // Valida os campos do formulário
  60. if(validaCampos($config['campos'])){
  61.  
  62. // PHPMailer Configuração
  63. $mail = new PHPMailer();
  64. $mail->SetLanguage("br");
  65. $mail->CharSet = "utf-8";
  66. $mail->IsSMTP();
  67. $mail->SMTPSecure = 'ssl';
  68. $mail->Host = $config['smtp']['host'];
  69. $mail->Port = $config['smtp']['port'];
  70. $mail->SMTPAuth = true;
  71. $mail->Username = $config['smtp']['username'];
  72. $mail->Password = $config['smtp']['password'];
  73.  
  74. // Definição de remetente/destinatario/assunto
  75. $mail->AddReplyTo($_POST['email'], $_POST['nome']);
  76. $mail->FromName = $_POST['nome'];
  77. $mail->From = $config['smtp']['username'];
  78. $mail->Subject = $config['envio']['assunto'];
  79. $mail->Body = generateBodyMail($config['campos']);
  80.  
  81. // Adiciona o array de destinatarios
  82. foreach($config['envio']['destinatarios'] as $destinatario){
  83. $mail->AddAddress($destinatario);
  84. }
  85.  
  86. // Adiciona o array de destinatarios oculto
  87. foreach($config['envio']['destinatariosOculto'] as $destinatario){
  88. $mail->AddCC($destinatario);
  89. }
  90.  
  91. // Verifica se uma imagem foi selecioada validando o tipo e tamanho permitidos
  92. if (isset($_FILES['arquivo']) && $_FILES['arquivo']['error'] == UPLOAD_ERR_OK) {
  93. if($_FILES['arquivo']['type'] != 'image/jpeg' && $_FILES['arquivo']['type'] != 'image/png' && $_FILES['arquivo']['type'] != 'application/pdf'){
  94. response('erro', 'Tipo de arquivo invalido, utilize JPG, PNG ou PDF.');
  95. }
  96. else if($_FILES['arquivo']['size'] > 2000000){
  97. response('erro', 'O tamanho máximo do arquivo deve ser 2MB');
  98. }
  99. else{
  100. $mail->AddAttachment($_FILES['arquivo']['tmp_name'], $_FILES['arquivo']['name']);
  101. }
  102. }
  103.  
  104. // Realiza o envio do email
  105. if(!$mail->send()) response('erro', 'Erro ao enviar formulário');
  106. else response('sucesso', '');
  107. }
  108.  
  109. else response('erro', 'Erro ao enviar formulário, preencha corretamente os campos');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement