Jump to content
schmidt.pvh

Envio de email com a função mail(), redimencionando as imagens com cod

Recommended Posts

Boa tarde galera... estou tentando criar uma aplicação de envio de mensagem com anexo usando a função do php Mail().

Até ai de boa... Resolvi fazer algo para redimensionar os anexos, visando que meus usuarios serão em sua grande maioria mobile.

Com um pouco de pesquisa, consegui um tutorial com funções em javascript que faz isso de boa. Essa parte tbem esta funfando conforme a ideia... redimensionando as imagens e salvando em uma pasta do meu host... agora a duvida éh... como faço para buscar os arquivos que estão em um diretorio do meu host, e anexa-las nesse email???

Share this post


Link to post
Share on other sites

Beraldo... bom dia... Antes de mais nada obrigado pela atenção.

 

então eu tentei usar o scandir(), porém não sei como acesso as informações do arquivo, tipo tmp_name, type, size...

 

no cabeçalho do email quando vou anexar os arquivos, passo essas informações.

Share this post


Link to post
Share on other sites

tmp_name, name, type, size e error são índices do array $_FILES, que só existe em upload via POST.

Se o arquivo já está no servidor, não há upload e, logo, não há esses valores.

Você precisa usar as funções de Filesystem que passei no post anterior

 

Tamanho de arquivo: filesize()

Nome do arquivo: será retornado por scandir(), glob() e funções afins

Mime-type: finfo_file(). Veja o Exemplo #! http://php.net/manual/en/function.finfo-file.php

Share this post


Link to post
Share on other sites
Beraldo... tentei fazer como esta a baixo, porem ele só anexa um txt vazio, se tiver como dar uma olhada...

ps. $dst = diretorio de arquivos.


$arq = scandir($dst);


if ($arq != NULL) {

$boundary = "XYZ-" . date("dmYis") . "-ZYX";

$mens = "--$boundary\n";

$mens .= "Content-Transfer-Encoding: 8bits\n";

$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain

$mens .= "$bodyMensage\n";

$mens .= "--$boundary\n";


$dh = opendir($dst);

while (false !== ($filename = readdir($dh))) {

$files[] = $filename;

}


for ($i = 0; $i > count($files); $i++) {


$mens .= "Content-Type: " . filetype($files[$i]) . "\n name=\"" . file($files[$i]) . "\"\n";

$mens .= "Content-Disposition: attachment; filename=\"" . file($files[$i]) . "\"\n";

$mens .= "Content-transfer-encoding:base64\n\n";

$mens .= $files[$i] . "\n";


if ($i + 1 == count($files))

$mens.= "--$boundary--";

else

$mens.= "--$boundary\n";

}



$headers = "MIME-Version: 1.0\n";

$headers .= "From: \"$nome\" <$email_from>\r\n";

$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";

$headers .= "$boundary\n";

//envio o email com o anexo

$envio = mail($email, $assunto, $mens, $headers);



if ($envio) {

header("location:sucess.php?envio=true");

} else {

header("location:sucess.php?envio=false");

}

}

Share this post


Link to post
Share on other sites

Consegui fazer funcionar... realmente sou pessimo com maior e menor... kkkk

valeu Beraldo.... Segue a parte do codigo funcional.

 

$arq = scandir($dst);
if ($arq != NULL) {
$boundary = "XYZ-" . date("dmYis") . "-ZYX";
$mens = "--$boundary\n";
$mens .= "Content-Transfer-Encoding: 8bits\n";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain
$mens .= "$bodyMensage\n";
$mens .= "--$boundary\n";
$dh = opendir($dst);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
for ($i = 0; $i < count($files); $i++) {
if (!is_dir($files[$i])) {
$leArq = $files[$i];
$fp = fopen($dst . $leArq, "rb");
$anexo = fread($fp, filesize($dst . $leArq));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
$mens .= "Content-Type: " . mime_content_type($leArq) . "\n name=\"" . basename($dst . $leArq) . "\"\n";
$mens .= "Content-Disposition: attachment; filename=\"" . basename($dst . $leArq) . "\"\n";
$mens .= "Content-transfer-encoding:base64\n\n";
$mens .= $anexo . "\n";
if ($i + 1 == count($files))
$mens.= "--$boundary--";
else
$mens.= "--$boundary\n";
}
}
$headers = "MIME-Version: 1.0\n";
$headers .= "From: \"$nome\" <$email_from>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";
$headers .= "$boundary\n";
//envio o email com o anexo
$envio = mail($email, $assunto, $mens, $headers);
array_map('unlink', glob($dst . '*'));
if ($envio) {
header("location:sucess.php?envio=true");
} else {
header("location:sucess.php?envio=false");
}
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By violin101
      Caros amigos, membros do grupo, saudações...
       
      Se postei minha dúvida na opção errada peço desculpa.
       
      Estou com uma pequena dúvida.
       
      Quando cadastro usuários na MySql utilizo PASSWORD_HASH para criptografar a Senha.
       
      Estou montando uma rotina, onde o usuário que esqueceu sua senha o sistema envia por e-mail a sua senha, mas me deparei com um pequeno problema.
       
      a senha criada pelo usuário, como por exemplo: 12345678 usando o PASSWORD_HASH fica desta forma: $2y$10$ukBckA5D2aSApHwv/GOKi.P/drP.jwAHOK/9SmWIgRxLUE.x9z.ZK
       
      Quando tento enviar a senha para o usuário vai conforme acima, preciso enviar apenas 12345678. Como consigo descriptografar o PASSWORD_HASH ?
       
      Grato,
       
      Cesar
    • By elisandrodceza
      Alguma ideia para pesquisar os $id recebidos por get em um arquivo diferente ? como se percebe no código funcional a baixo, os $id estão duplicados para funções diferente. Quero adicionar eles em outro arquivo para uma melhor organização com as variáveis $id e $client,  mas de uma maneira que possa pesquisar tanto qual é a $id e o $client para ser informado por email quando o client ler o qrcode, quanto se a $id está na lista para ser redirecionado.
       
       
      ARQUIVO auth_code.php
       
      <?php
          $id = $_GET['id'];
          $ip = $_SERVER['REMOTE_ADDR'];
          $browser = $_SERVER['HTTP_USER_AGENT'];
          $to = "suporte@eatech.inf.br";
          $success = false;

              if ($id == '2623F52846F8A03DA4ADFA9392486807') $client = "Card Contato";
              if ($id == '2BDBDDA17456A1060E156BE7A487FC') $client = "Client 1";
              if ($id == 'E7EA229948A4997C2F72219D6A2764') $client = "Client 2";
              if ($id == '07118879907903166B2C3BE7408EFD') $client = "Client 3";
              if ($id == 'FED09C7CC40ACD77A0BDEA57E894A3') $client = "Client 4";
              if ($id == 'C042D3187B52E87D6E6196567101EF') $client = "Client 5";
              if ($id == '7DCD0215BEC8AF587AD886E407A485') $client = "Client 6";
       
          $messagem = "Cliente: $client<br><br>ID: $id<br><br>IP: $ip<br><br>Browser: $browser"; 
          $assunto = "qrCode digitalizado";
          $headers = "MIME-Version: 1.0\n";
          $headers .= "Content-type: text/html; charset=iso-8859-1\n";
          $headers .= "From: $client\n";
          
          $success = mail($to, $assunto, $messagem, $headers);
          
          if ($id == '2623F52846F8A03DA4ADFA9392486807')
              { header('Location: download/contato.vcf');}
       
          else
              if (

              $id == '2BDBDDA17456A1060E156BE7A487FC' # Client 1
              or $id == 'E7EA229948A4997C2F72219D6A2764' # Client 2
              or $id == '07118879907903166B2C3BE7408EFD' # Client 3
              or $id == 'FED09C7CC40ACD77A0BDEA57E894A3' # Client 4
              or $id == 'C042D3187B52E87D6E6196567101EF' # Client 5
              or $id == '7DCD0215BEC8AF587AD886E407A485' # Client 6
              )
              { header('Location: download/index.php?id=' . $id. '.pdf');}
       
          else
              { echo "<script>alert('Este qrCode ainda não está cadastrado no sistema, tente novamente mais tarde!');history.go(-1) </script>";}
      ?>
    • By rfael023
      Bom dia, Pessoal.

      Sou iniciante em PHP e estou trabalhando na integração de uma API. Estou tendo um pouco de dificuldade em índices de um array, segue abaixo o trecho do código:


       
      1 2 3 4 5 6 7 foreach ($Lista as $SMS) {           foreach ($SMS as $key => $value) {                   echo "{$key} : {$value}\n";         } }

      O resultado é o seguinte:

      telefone : 5519333333333
      id : 921

      telefone : 5519344444444
      id : 922

      telefone : 5519555555555
      id : 923

      Ou seja, eu tenho vários arrays com 2 posições dentro de um único array.

      Eu preciso jogar o ID e o Telefone em variáveis, porém ele não está entendendo meu índice:
       
      1 2 3 4 $sms->setTo($SMS['telefone']); echo $sms->getTo(); $sms->setId($SMS['id']); echo $sms->getId();

      Resultado:

      5,52E+12
      Notice: Undefined index: id in C:\xampp1\htdocs\SMSM\exemplos\envio_multiplo_teste.php on line 42
      5,52E+12
      Notice: Undefined index: id in C:\xampp1\htdocs\SMSM\exemplos\envio_multiplo_teste.php on line 42
      5,51198E+12
      Notice: Undefined index: id in C:\xampp1\htdocs\SMSM\exemplos\envio_multiplo_teste.php on line 42
      5,51198E+12
      Notice: Undefined index: id in C:\xampp1\htdocs\SMSM\exemplos\envio_multiplo_teste.php on line 42
      5,53176E+11
      Notice: Undefined index: id in C:\xampp1\htdocs\SMSM\exemplos\envio_multiplo_teste.php on line 42
      5,53176E+11
      Notice: Undefined index: id in C:\xampp1\htdocs\SMSM\exemplos\envio_multiplo_teste.php on line 42

      Alguém consegue me ajudar?

      Agradeço, desde já!
    • By z101
      Sou iniciante, nunca usei PHP na vida e preciso concluir uma tabela de distribuição de frequencia e o polígono de um array, o pouco que vi é muito confuso, alguém aqui já teve que fazer isso antes? 
       
       
    • By xdxddxd
      ao clicar em um botão eu gostaria de exibir um confirm no site, mas eu gostaria de Mudar de "OK" Para "Home" e "Cancelar" para "Estoque".
      isso usando javascript puro, alguem pode me ajudar ?
      já agradeço de já.
      tem que usar algum plugin no site ou tem como fazer puro mesmo.
      se quiser deixar só um link com o tutorial eu já agradeço, porém não achei nenhum do jeito que eu quero no google.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.