PHPMailer仅在含CC字段时发送邮件,如何设置CC为可选?
解决PHPMailer中CC字段可选的问题
问题出在你直接给addCC()传了空值或无效地址,PHPMailer会对添加的邮箱地址做校验,无效时就会抛出错误。你之前的判断逻辑不对,因为isset($_POST['emailfrom'])和$CC是否有效没有关联,就算这个字段存在,$CC也可能是空的。
正确的做法是仅当$CC是有效的邮箱地址时才调用addCC方法,代码修改如下:
$mail->addAddress($EmailTo); // 验证$CC不为空且是合法邮箱地址时,添加抄送 if (!empty($CC) && filter_var($CC, FILTER_VALIDATE_EMAIL)) { $mail->addCC($CC); } $mail->Subject = $Subject; $mail->Body = nl2br($Message); $mail->AltBody = nl2br($Message); $mail->isHTML(false); $mail->send();
代码说明:
!empty($CC):确保$CC不是空字符串、null或者false这类无效值filter_var($CC, FILTER_VALIDATE_EMAIL):用PHP内置过滤器验证邮箱格式的合法性,避免传入错误格式的地址触发PHPMailer的校验错误
这样修改后,不管$CC是空值还是无效地址,都不会执行addCC(),自然就不会报错,同时有效时正常添加抄送。
内容的提问来源于stack exchange,提问作者Lucy Huang
相关产品推荐
相关产品推荐

