代码:
<?php
if(isset($_POST['data']) && !empty($_POST['data']) && isset($_POST['email']) && !empty($_POST['email'])) {
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
var_dump($email);
$data = explode(',', $_POST['data']);
mailImages($data);
}
function mailImages($data){
require_once "../PHPMailer_5.2.0/class.phpmailer.php";
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
try {
$mail->CharSet = 'UTF-8';
$mail->AddReplyTo('kasper.lassner@peterwolf.agency', 'Colegio Suizo de México');
// $mail->AddAddress('******@****.agency','K L');
//$mail->AddAddress('"'.$email.'"','');
$mail->AddAddress($email,'test');
$mail->SetFrom('*******@********.agency', 'Colegio Suizo de México');
$mail->Subject = 'CSM Fotos';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML('Test message');
foreach($data as $image){
$mail->AddAttachment(realpath(dirname(__FILE__)).'/'.str_replace(' ','',$image));
}
$mail->Send();
echo 'OK';
} catch (phpmailerException $e) {
//echo $e->errorMessage();
echo $mail->ErrorInfo;
} catch (Exception $e) {
echo 'NO';//Boring error messages from anything else!
}
}
?>
所以我的问题如下:我得到一个&#34;无效地址:&#34;&#34;错误。当我评论这一行时:
$mail->AddAddress($email,'test');
取消注释这一行:
$mail->AddAddress('******@****.agency','K L');
传递字符串值有效。所以问题显然是$email
变量在某种程度上是不被接受的。 var_dump输出:"string(24) "*******@****.com"
所以它是一个字符串。
我已经搜索过已有的答案,但无法找到具体问题。
非常感谢任何帮助。
答案 0 :(得分:1)
您的问题在http://php.net/manual/en/language.variables.scope.php中解释。
默认情况下,函数中使用的每个变量都隐含在该函数的本地变量中。 $email
中的mailImages
与$email
外部无关。由于未设置变量,因此会导致&#34;无效地址&#34;错误。
您可以通过添加其他函数参数来解决此问题:
function mailImages($data, $email) { ... }
// call as
mailImages($data, $email);
或明确将$email
标记为全局:
function mailImages($data) {
global $email;
...
}