Como enviar e-mail via PHPMailer, extraindo o e-mail do destinatário de uma query?

21/04/2022

7

Olá pessoal!

Estou precisando fazer envio de e-mail via PHPMailer de forma dinâmica, porém estou com problemas na linha 22. O e-mail do destinatário não está chegando, mas o CC está, observem o código abaixo:

require('../PHPMailer/PHPMailerAutoload.php');

if (isset($_POST['mat']) && !empty($_POST['mat'])) { $mat = utf8_decode($_POST['mat']);}
if (isset($_POST['nome']) && !empty($_POST['nome'])) { $nome = utf8_decode($_POST['nome']);}
if (isset($_POST['senha']) && !empty($_POST['senha'])) { $senha = $_POST['senha'];}
if (isset($_POST['email']) && !empty($_POST['email'])) { $email = $_POST['email'];}

	$mail = new PHPMailer;
	$mail->Charset = 'UTF-8';
	$mail->SetLanguage("br");	
	$mail->isSMTP();
    $mail->Host = 'smtp.host.com.br';
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'tls';
    $mail->Username = 'nao-responder@empresa.com.br';
    $mail->Password = 'senha';
    $mail->Port = 587;
    $mail->isHTML(true);
	
	//E-MAIL REMETENTE
    $mail->setFrom('nao-responder@empresa.com.br', 'NOME DA EMPRESA');
    $mail->addAddress = ('$email');
    $mail->addBCC('notificacoes@empresa.com.br');
	
	//ASSUNTO DO EMAIL
    $mail->Subject = 'Seja bem-vindo(a) | '.$nome;
	
	//CORPO DO EMAIL COMPLETO
    $mail->Body    = "{CONTEUDO DO EMAIL HTML AQUI}";

    if(!$mail->send()) {
		header('Location: ../resultado.php?status='.$mail->ErrorInfo);
    } else {
         header('Location: ../edita-aluno.php?alu_id='.$mat);
    }


OBS: Considerem a aspa ('), como sendo apenas uma. Não sei por quê no código saiu assim, como se houvessem duas!

Obrigado, desde já!
Myller Meireles

Myller Meireles

Responder

Post mais votado

22/04/2022

Bom dia, jovem. Tudo bem?

Provavelmente sua classe deve estar recebendo um $email no Address.

O que ocorre no seu código é o seguinte:

Aspas simples o PHP entende como literal, ou seja, o texto que estiver em aspas simples é o valor que ele vai receber, logo se você colocar uma variável $email em aspas simples, o PHP não vai pegar o valor da variável mas sim a string '$email'.

Para concatenar o valor do $email, você pode tirar as aspas se ela já é uma string ou usar aspas duplas, que ai o PHP entende que você está concatenando o valor da variável e não um texto.

Como $email deve ser uma string já, não há necessidade de você utilizar aspas pra passar ela pro addAddress().

Na sua linha 22, deixe assim:
$mail->addAddress = ($email);


ou assim:

$mail->addAddress = ("$email");


Espero ter ajudado. ;)

Alex William

Alex William
Responder

Mais Posts

22/04/2022

Myller Meireles

Nobre Alex, bom dia!

Estou bem e espero que vc tb esteja.

Tenho ciência da diferença no uso das aspas simples e duplas, mas obrigado por reforçar... isso certamente ajudará outras pessoas.

Eu já tinha feito antes o que você sugeriu:
$mail->addAddress = ($email);

ou
$mail->addAddress = ("$email");

Mas mesmo assim o e-mail não chega ao destinatário... ciências ocultas meeeesmo!!! rsrsrs

No campo "para" do e-mail aparece o termo "undisclosed-recipients:;" (destinatários não divulgados).

Realmente não sei onde está o problema!

Qual detalhe a mais eu poderia te passar pra desvendar isso?

Responder

27/04/2022

Myller Meireles

Nobre Alex, bom dia!

Estou bem e espero que vc tb esteja.

Tenho ciência da diferença no uso das aspas simples e duplas, mas obrigado por reforçar... isso certamente ajudará outras pessoas.

Eu já tinha feito antes o que você sugeriu:
$mail->addAddress = ($email);

ou
$mail->addAddress = ("$email");

Mas mesmo assim o e-mail não chega ao destinatário... ciências ocultas meeeesmo!!! rsrsrs

No campo "para" do e-mail aparece o termo "undisclosed-recipients:;" (destinatários não divulgados).

Realmente não sei onde está o problema!

Qual detalhe a mais eu poderia te passar pra desvendar isso?



Alex,

O problema foi resolvido inserindo da seguinte forma:

$mail->addAddress($email);

Estranho, mas não achei que fosse fazer diferença entre ter o sinal de igual (=) ou não. Enfim... inseri como está acima e deu certo... Obrigado!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar