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 britoriquee
      Olá pessoal!

      Tenho dois bancos: dt_dblogin e dt_dbdados, o primeiro salva os dados de login do usuário, como login, senha, id, etc... Já o segundo salva dados da empresa do usuário, como nome, endereço, cnpj, dentre varios outros. 
       
      A minha dúvida é: Como faço para verificar qual usuário está logado para liberar o conteúdo certo da empresa dele que está no outro banco? 
       
      Agradeço a atenção.
    • By ThosuZ
      Olá, pessoal. Perdoem-me pelo título horrível, eu realmente não sei como resumir. Gostaria de saber qual o nome e com que linguagem é feita aquele pequena animação que alguns sites possuem, que é quando você vai rodando o scroll pra baixo e aos poucos os objetos vão aparecendo sem desaparecer quando você volta o scroll pra cima. Gostaria de saber apenas o nome pra poder procurar tutoriais e afins.
       
      Exemplo: https://ribetav.46graus.com/ notem que os objetos vão aparecendo aos poucos.
    • By leonardoc.g
      Quando eu tento fazer conexão no banco de dados pelo Dreamweaver me aparece essa mensagem:
       
      your php server doesn't have the MySQL module loaded or you cant't use the mysql_(p)connect functions
       
       
    • By Julie_santiago
      Olá!
      Pessoal, preciso muito de um help urgente. Estou tentando fazer uma simples query ao banco de dados, usando o Axios. Mas, não importa a forma de fazer a requisição, o Axios não funciona. O HTML está abaixo, onde chamo a função enviaDados() através do onsubmit.
      <div class="input-group md-form"> <form method="get" onsubmit="enviaDados()" name="buscar"> <input type="text" id="Form-search2" class="form-control" name="nomeReagente"> <label for="Form-search2">Search</label> <input type="submit" name="pesquisar" value="buscar"> </form> <span class="input-group-text dark lighten-2" id="basic-text1"> <i class="fas fa-search text-dark" aria-hidden="true"></i> </span> </div> Meu arquivo main.js que contém a função enviaDados().
      function enviaDados(){ let nome = buscar.nomeReagente.value recebeDados(nome); } Dentro dessa função, estou chamando outra: recebeDados() que executa a requisição Axios. Passo como parâmetro o valor lá do meu input. OBS.: Meu código está assim, aparentemente confuso, porque o objetivo é ter funções que enviam os dados dos meus formulários e outras funções (genéricas) para receber e tratar esses dados. Abaixo a função recebeDados():
      function recebeDados(nome_reagente){ axios.get('http://localhost/Quimica/php/recebe_json.php', { params: { nome } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log('Não foi possível realizar a requsição: '+error); }) .finally(function () { }); } Não importa o que eu faça, sempre cai no CATCH  - request aborted. Preciso muito resolver esse problema, mas não faço ideia do que pode ser. Relevem qualquer "noobice" porque estou aprendendo o básico ainda.
       
×

Important Information

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