Como enviar e-mail via PHPMailer, extraindo o e-mail do destinatário de uma query?
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:
Obrigado, desde já!
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
Curtidas 0
Melhor post
Alex William
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:
ou assim:
Espero ter ajudado. ;)
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. ;)
GOSTEI 1
Mais Respostas
Myller Meireles
21/04/2022
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:
ou
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?
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?
GOSTEI 0
Myller Meireles
21/04/2022
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:
ou
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?
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!
GOSTEI 0