динамическая настройка адреса электронной почты в phpMailer - PullRequest
0 голосов
/ 15 января 2020

У меня проблемы при попытке установить электронную почту динамически из переменной GET. Я уже пытался преобразовать в строку, но получаю следующее сообщение: «Ошибка почтовой программы: необходимо указать хотя бы один адрес электронной почты получателя».

$destinationEmail = $_GET["email"];

  //$destinationEmail = (string)$_GET["email"]; ----> already tried this.

function sendEmail($pdf,$data){

$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "xxxxxx";
$mail->Password = "xxxx";
$mail->SetFrom("Noreply@email.com");
$mail->Subject = "Subject";
$mail->Body = "Hello";
$mail->AddAddress($destinationEmail);
$mail->addStringAttachment($pdf,"pdf.pdf");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }
}

if ( $_GET["email"] ){
    sendEmail($pdf,$data);
}


Любая помощь будет высоко оценена. Заранее спасибо!

1 Ответ

0 голосов
/ 15 января 2020

Функция sendEmail() не знает об адресе электронной почты, поскольку эта переменная находится вне области видимости. Вам необходимо передать переменную $destinationEmail в функцию sendEmail():

function sendEmail($pdf,$data,$destinationEmail){
 ...
}

, а затем добавить адрес электронной почты для вызова функции:

if ( $_GET["email"] ){
    sendEmail($pdf,$data,$destinationEmail);
}
...