Anexar arquivo pdf e enviar para e-mail do cliente

Enviada por Xavier 
Xavier
Anexar arquivo pdf e enviar para e-mail do cliente
29 de May de 2018 às 03:30PM
Olá pessoal !!!

Eu gero o boleto de pagamento e salvo no arquivo "tmp" como pdf na biblioteca mpdf. Agora preciso pegar esse arquivo.pdf dentro da pasta "tmp" e enviar para o email do cliente.
1- Tenho de anexar esse arquivo;
2- Enviar o arquivo para o e-mail do cliente;

Como que eu faço isso?

Grato.
Trambulhao
Re: Anexar arquivo pdf e enviar para e-mail do cliente
30 de May de 2018 às 06:31AM
Procura no Google pela classe "PHPMailer". Existem diversos tutoriais na net que te vão ajudar.
Xavier
Re: Anexar arquivo pdf e enviar para e-mail do cliente
30 de May de 2018 às 12:41PM
Pois é...
Já tentei vários exemplos, porém não funciona não envia...
Xavier
Re: Anexar arquivo pdf e enviar para e-mail do cliente
30 de May de 2018 às 04:40PM
Olá!

Estou usando a classe nativa mail do php. E está dando o seguinte erro:

"Erro! Não foi possível enviar o e-mail solicitado"
Xavier
Re: Anexar arquivo pdf e enviar para e-mail do cliente
31 de May de 2018 às 09:13AM
Beleza Trambulhão!!!
Mudei a estratégia, porém ainda não envia. Fala que enviou com sucesso, porém não envia nada para o email de teste. Já dei permissão ao gmail para aceitar app mais fracos e ainda nada. Podes me ajudar verificando o código? Já debuguei-o todo. Tudo está retornando como manda o mandarim. Agora só falta enviar...
Olha o código:

<?php

if(isset($_POST['btn_finalizar'])){
{

//recuperando os dados do cliente
$cliente = $_POST['cli_nome'];
$email_cli = $_POST['cliemail'];

$para = $email_cli;
$de = "meuemail@gmail.com";
$assunto = "Teste";
$corpo = "Isto é um teste de envio";
$caminho = 'pdf/tmp/' . $arquivo;

$bound = "XYZ-" . date("dmYis") . "-ZYX";
if (($fp = fopen($caminho,"rb"))) {
$anexo = fread($fp,filesize($caminho));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}

if ($anexo) {
$mensagem = "AAAAAAAAAAAAA";
$mensagem .= "--". $bound ."\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n".$corpo."\n\n"
."--".$bound."\nContent-type:".$caminho."\nContent-Disposition: attachment; filename=" .$caminho. "\nContent-Transfer-Encoding: base64\n\n".$anexo."\n"
. "--" . $bound . "\r\n";
mail($para,$assunto,$mensagem,"From: ".$de. "\nMIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\$bound\"");
echo "Enviado com sucesso";
} else {
mail($para,$assunto,$corpo,"From: " .$de."\nContent-type: text/html");
echo "Enviado com sucesso";
}
}
}
?>
Trambulhao
Re: Anexar arquivo pdf e enviar para e-mail do cliente
31 de May de 2018 às 11:01AM
Bom, se o código não gera erro e aparece a mensagem "enviado com sucesso", poderá ser que o tamanho do arquivo exceda o limite máximo. Faz um teste com um arquivo pequeno. Cria um com a função phpinfo() para ver as suas configurações http://php.net/manual/pt_BR/function.phpinfo.php

Entretanto, corrija esses dois erros:

1º. Remova a chave "{" que está a mais nesse if

if(isset($_POST['btn_finalizar'])){
{

2º. Remova a chave "}" a mais no fim do código.
Trambulhao
Re: Anexar arquivo pdf e enviar para e-mail do cliente
31 de May de 2018 às 11:26AM
Tive analisando o teu código e encontrei alguns "erros". Nesse momento não posso te ajudar.. mas vou tentar fazer um simples exemplo e postar aqui
Xavier
Re: Anexar arquivo pdf e enviar para e-mail do cliente
31 de May de 2018 às 03:05PM
Ok Trambulhão!
Aguardo então...
Muito obrigado pela força.
Xavier
Re: Anexar arquivo pdf e enviar para e-mail do cliente
31 de May de 2018 às 03:30PM
Olha o resultado ou seja o tamanho do anexo em var_dump($anexo);

string 'JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI4MCA4NDEuODkwXQovVHJpbUJveCBbMC4wMDAgMC4wMDAgNTk1LjI4MCA4
NDEuODkwXQovUmVzb3VyY2VzIDIgMCBSCi9Hcm91cCA8PCAvVHlwZSAvR3JvdXAgL1MgL1RyYW5z
cGFyZW5jeSAvQ1MgL0RldmljZVJHQiA+PiAKL0NvbnRlbnRzIDQgMCBSPj4KZW5kb2JqCjQgMCBv
YmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDE1OTY+PgpzdHJlYW0KeJytWc1u3DYQ
5nmfgoce2sCmKUrUj1EUSGzHseHGrm20BYoe1t6N48DrdXadtAj6ZH2OvkDRQ9Fek1NP/TiiuBTF
tSW0WOhv9HHm43BmOLK54ocjKXRe8J9Gz8751vOEJ4mQ'... (length=64732)
Enviado com sucesso

tamanho = (length=64732). Então preciso configurar o tamanho até: 65000.
Trambulhao
Re: Anexar arquivo pdf e enviar para e-mail do cliente
31 de May de 2018 às 07:23PM
Seguinte, preenche os dados necessários "nome e email" do remetente e destinatário.. joga um pdf com o nome de "teste.pdf" na pasta "pdf/tmp/" e testa aí.. se correr tudo bem, eu adapto ao teu código.

<?php

// CONIFIG -------------------------------------

// Remetente (de)
$fromName = 'remetente';
$fromEmail = 'remetente@mail.com';

// E-mail caso o destinatário queira enviar uma resposta
$replyTo = "remetente@mail.com"; // $fromEmail ou outro

// Destinatário (para)
$toName = 'destinatario';
$toEmail = 'destinatario@mail.com';

$subject = 'assunto aqui'; // assunto
$message = 'mensagem aqui'; // mensagem

// Aqruivo
$file = 'pdf/tmp/teste.pdf';

// -----------------------------------------------

$charset = 'utf-8'; // iso-8859-1

const CRLF = PHP_EOL;

$uid = md5(uniqid(rand()));

// Cabeçalhos
$headers = 'MIME-Version: 1.0' . CRLF;
$headers .= 'Date: ' . date('r', time()) . CRLF;
$headers .= "From: $fromName <$fromEmail>" . CRLF;
$headers .= "Reply-To: $replyTo" . CRLF;

// Arquivo "Embutido"
if (is_file($file)) {
$basename = basename($file);
$type = (new finfo(FILEINFO_MIME_TYPE))->file($file);
$content = chunk_split(base64_encode(file_get_contents($file)), 76, CRLF);

$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"PHP-rel-$uid\"";

$body = "--PHP-rel-$uid" . CRLF;
$body .= "Content-Type: multipart/alternative; boundary=\"PHP-alt-$uid\"" . CRLF;
$body .= CRLF;
$body .= "--PHP-alt-$uid" . CRLF;
$body .= "Content-Type: text/html; charset=\"$charset\"" . CRLF;
$body .= "Content-Transfer-Encoding: 7bit" . CRLF;
$body .= CRLF;
$body .= $message . CRLF;
$body .= CRLF;
$body .= "--PHP-alt-$uid--" . CRLF;
$body .= CRLF;

$body .= "--PHP-rel-$uid" . CRLF;
$body .= "Content-Type: $type; name=\"$basename\"" . CRLF;
$body .= "Content-Disposition: attachment; filename=\"$basename\"" . CRLF;
$body .= "Content-Transfer-Encoding: base64" . CRLF;
$body .= CRLF;
$body .= $content . CRLF;
$body .= CRLF;
$body .= "--PHP-rel-$uid--" . CRLF;
}
else {
$headers .= "Content-Type: multipart/alternative; boundary=\"PHP-alt-$uid\"";

$body = "--PHP-alt-$uid" . CRLF;
$body .= "Content-Type: text/html; charset=\"$charset\"" . CRLF;
$body .= "Content-Transfer-Encoding: 7bit" . CRLF;
$body .= CRLF;
$body .= $message . CRLF;
$body .= "--PHP-alt-$uid--" . CRLF;
}

if (mail($toEmail, $subject, $body, $headers)) {
echo 'sucesso..';
}
else {
echo 'falhou..';
}
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.