Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelo2605

[Resolvido] phpmailer com destinatário dinâmico

Recommended Posts

Tudo bem, vou tentar responder:

 

Criei a variável $texto e atribuí a ela o valor $row_rsPsicologiaT['texto'];

 

Então deixei o código assim:

 

$mail->Body = $texto;

 

Parece lógico, mas não deu certo.

 

Complementando: o código para pegar os dados do bd é:

 

mysql_select_db($database_db_CFP, $db_CFP);
$query_rsPsicologiaT = sprintf("SELECT * FROM textos WHERE id = %s", GetSQLValueString($colname_rsPsicologiaT, "int"));
$rsPsicologiaT = mysql_query($query_rsPsicologiaT, $db_CFP) or die(mysql_error());
$row_rsPsicologiaT = mysql_fetch_assoc($rsPsicologiaT);
$totalRows_rsPsicologiaT = mysql_num_rows($rsPsicologiaT);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela vem de onde ?

De uma consulta SQL ?

Como você está fazendo ?

O que é atribuido(supostamente) a ela ?

$row_rsPsicologiaT['texto']

 

 

Posta o código(inteiro) de como você está fazendo.

Resolver seu problema com trechos de códigos jogados ao vento é bem complicado <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo: eu puxo de uma consulta SQL. O código eu postei acima.

 

texto.php (onde está o texto que desejo enviar por email)

 

<?php require_once('../Connections/db_CFP.php'); ?>

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
 if (PHP_VERSION < 6) {
   $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
 }

 $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 switch ($theType) {
   case "text":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;    
   case "long":
   case "int":
     $theValue = ($theValue != "") ? intval($theValue) : "NULL";
     break;
   case "double":
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
     break;
   case "date":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;
   case "defined":
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
     break;
 }
 return $theValue;
}
}

$colname_rsPsicologiaT = "-1";
if (isset($_GET['id'])) {
 $colname_rsPsicologiaT = $_GET['id'];
}
mysql_select_db($database_db_CFP, $db_CFP);
$query_rsPsicologiaT = sprintf("SELECT * FROM textos WHERE id = %s", GetSQLValueString($colname_rsPsicologiaT, "int"));
$rsPsicologiaT = mysql_query($query_rsPsicologiaT, $db_CFP) or die(mysql_error());
$row_rsPsicologiaT = mysql_fetch_assoc($rsPsicologiaT);
$totalRows_rsPsicologiaT = mysql_num_rows($rsPsicologiaT);
?>

<head>...</head>
<body>

<div id="page_content">
      			<h1><span class="bold"><?php echo $row_rsPsicologiaT['titulo']; ?></span><br />
      			<span class="autor"><?php echo $row_rsPsicologiaT['autor']; ?></span><br />
               <?php echo nl2br ($row_rsPsicologiaT['texto']); ?></h1>

               <div id="dialog" title="Envie por email">

	<form name="form_texto" id="form_texto" method="post" action="send_texto.php">

                         <fieldset>
                             <label for="destino">Para:</label>
                             <input type="text" name="destino" id="destino" />
                         </fieldset>

                         <fieldset>
                             <label for="nome">Meu nome:</label>
                             <input type="text" name="nome" id="nome" />
                         </fieldset>

                         <fieldset>
                             <label for="email">Meu email:</label>
                             <input type="text" name="email" id="email" />
                         </fieldset>

                         <fieldset>
                             <label for="comentarios">Comentários:</label>
                             <textarea rows="4" id="comentarios"></textarea>
                         </fieldset>

                         <fieldset>
                             <input type="submit" value="Enviar" />
                         </fieldset>
                         <input type="hidden" name="MM_insert" value="form_texto" />
                   </form>

			</div>
           </div>
</body>

 

Agora o script send_texto.php

 

<?php
// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
require("../php/class.phpmailer.php");

// Inicia a classe PHPMailer
$mail = new PHPMailer();

// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.dialhost.com.br"; // Endereço do servidor SMTP  
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->Username = '***'; // Usuário do servidor SMTP
$mail->Password = '***'; // Senha do servidor SMTP

// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = 'web@claudiaferreira.psc.br'; //  e-mail do solicitante
$mail->FromName = "nome do solicitante"; //  nome  do solicitante

// Define os destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAddress($_POST['destino'], '');
//$mail->AddAddress('ciclano@site.net');
//$mail->AddCC('ciclano@site.net', 'Ciclano'); // Copia


// Define os dados técnicos da Mensagem
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'utf-8';//'iso-8859-1'; // Charset da mensagem (opcional)

// Define a mensagem (Texto e Assunto)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->Subject  = "assunto"; // Assunto da mensagem
$texto = $_GET[$row_rsPsicologiaT['texto']];
$mail->Body = $texto;


//$mail->AltBody = "Este é o corpo da mensagem de teste, em Texto Plano!";

// Define os anexos (opcional)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//$mail->AddAttachment("c:/temp/documento.pdf", "novo_nome.pdf");  // Insere um anexo

// Envia o e-mail
$enviado = $mail->Send();

// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca um input hidden


<input type="hidden" name="texto" value="<?php echo $row_rsPsicologiaT['texto']; ?>">

 

Assim ele vai junto com o post, daí sim você pode usá-lo na página send_texto.php

 

$mail->Body = $_POST['texto'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é apenas para inserir quebras de linha HTML antes de todas newlines em uma string, se você necessita colocar, altera o input:

<input type="hidden" name="texto" value="<?php echo nl2br($row_rsPsicologiaT['texto']); ?>">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos, só uma correção:

 

O nl2br eu tive que colocar no input:

 

<input type="hidden" name="texto" value="<?php echo nl2br ($row_rsPsicologiaT['texto']); ?>">

 

Pois do outro jeito dava erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos, infelizmente o código que você me passou tem uma restrição séria (ou sou eu que estou fazendo alguma coisa errada)

 

Ele não permite que eu "importe" mais de uma variável para o e-mail. Por exemplo: tenho que importar texto e título. Com o código que você me passou, o e-mail enviado só envia uma das variáveis, nunca as duas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código funciona.

 

Se você quer passar mais valores pelo post.

<input type="hidden" name="titulo" value="<?php echo $row_rsPsicologiaT['titulo']; ?>">
<input type="hidden" name="texto" value="<?php echo nl2br ($row_rsPsicologiaT['texto']); ?>">

 

Depois usa assim:

$mail->Body  = $_POST['titulo'] . '<br/>';
$mail->Body .= $_POST['texto'];

 

Sacou ? ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.