在 phpMailer 中动态设置电子邮件地址

dynamically setting email adress in phpMailer

我在尝试从 GET 变量动态设置电子邮件时遇到问题。 我已经尝试转换为字符串,但我不断收到:"Mailer Error: You must provide at least one recipient email address."

$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);
}


我们将不胜感激任何帮助。提前致谢!

sendEmail() 函数不知道电子邮件地址,因为该变量超出范围。您需要将 $destinationEmail 变量传递给您的 sendEmail() 函数:

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

然后将电子邮件地址添加到函数调用中:

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