Jump to content

Enviar email recorrendo a um ficheiro exterior layout.php


Recommended Posts

Posted

Boa noite,

O contexto é o seguinte; estou num form onde faço upload de ficheiros para um cliente especifico. Neste processo, sai um email a notificar o cliente de que foi carregado um ficheiro novo.

Para enviar o email estou a usar a class phpmailer (smtp_basic) e lá pelo meio tenho isto

$body             = file_get_contents('layout.php');

Neste ficheiro layout está a estrutura html que irá seguir no email. Agora o que eu estou a tentar conseguir é;

Passar uma variável para o layout, para que seja embutida no layout (por exemplo o nome do ficheiro carregado).

Experimentei fazer assim;

$body             = file_get_contents('layout.php?nomeficheiro=$nomeficheiro');

Com erro: Pq não conseguiu localizar o ficheiro layout.php?nomeficheiro=$nomeficheiro. também experimentei com variavel de sessão ... sem sucesso.

Alguém já passou por isto? Alguém pode dar uma dica aqui  😛

Posted

a função get_file_contents pega no conteúdo textual do ficheiro e retorna uma string com esse conteúdo ...

é absurdo o que estás a fazer ... não mistures um ficheiro de texto com um resultado do processamento através do PHP de uma ficheiro de texto

eu poderia dizer para fazeres um :

eval(file_get_contents("layout.php"));

mas presuponho que dentro do ficheiro "layout.php" tenhas includes levando a erros de multiplas definições

o que podes fazer é teres um ficheiro de texto com o layout do conteúdo do email com algum tipo de "tags" que podem ser alteradas, do género:

$layout = file_get_content("layout.txt"); // le o conteúdo do ficheiro para a variável layout
$layout = str_replace("{nome}", $nome, $layout); // altera todas as instâncias da string "{nome}" para o valor da variável $nome
IRC : sim, é algo que ainda existe >> #p@p
Posted

Não é assim tão disparatado. Eu faria isso com um qualquer sistema de templates mas experimenta lá:

<?php
$url = "http://www.teste.com/x.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('nome'=>'eufrásio'));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

<?php
#
# este é o x.php
#
echo "olá ". $_POST['nome'];
?>

Nunca é demais lembrar para não esquecer as questões de segurança e tal! 😛

Posted

Podes usar ob, assim no teu layout podes usar variaveis e fazer echos

layout.php

<h1>Email para: <?php echo $email?></h1>

$email = 'teste@exemplo.pt';
ob_start();
include 'layout.php';
$body = ob_get_contents();
ob_end_clean()

O que não tem solução, solucionado esta...

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
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.