Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送邮件[PHP]_Php_Email_Sendmail - Fatal编程技术网

发送邮件[PHP]

发送邮件[PHP],php,email,sendmail,Php,Email,Sendmail,我的PHP代码有问题。我使用IF-ELSE来检查一切是否正常,但它总是给我一个“你没有输入收件人”的提示 您最终的意思是:空()而不是isset(),因为它总是被设置的……但不总是被填充 或者检查isset($\u POST['to'])和其他键,但不要在指定的变量上使用isset(检查是否为null/==null更好 将您的条件if(!isset($to))替换为if(isset($to)) 并添加空支票 文件: 像这样: if (substr_count($to, '@') <=

我的PHP代码有问题。我使用IF-ELSE来检查一切是否正常,但它总是给我一个“你没有输入收件人”的提示


您最终的意思是:空()而不是isset(),因为它总是被设置的……但不总是被填充

或者检查isset($\u POST['to'])和其他键,但不要在指定的变量上使用isset(检查
是否为null
/
==null
更好

将您的条件
if(!isset($to))
替换为
if(isset($to))
并添加空支票

文件:

像这样:

if (substr_count($to, '@') <= 1 ) {
    if (isset($to) && !empty($to)) {
        if (isset($from) && !empty($from)) {
            if (isset($subject) && !empty($subject)) {
                if (isset($message) && !empty($message)) {
                    mail($to, $subject, $message, "From: " . $from);
                    print "Message was sent!";
                }else {print "You did not enter a message";} 
            }else {print "You did not enter a subject";}
        }else {print "You did not enter a from email";}
    }else {print "You did not enter a recipient";}
}else{print "You entered 2 or more emails.";}

if(substr_count($to,'@')如果您的所有表单数据都为空,则代码将发送邮件。
if(!isset($\u POST[“某物”])
表示如果未设置数据,将触发条件进程


删除感叹词。

在提交表单之前,请确保您的表单使用regex&| html5/css3进行了正确的验证。最后,我建议使用!empty()verse isset()

if (mail($to, $subject, $message, "From: " . $from)) { 
   print "Message was sent!";
} else { print "email failed to send!"; }
此外,我还将From:设置变量时不调用它,但这更符合个人偏好

$from= "From: trim($_POST['spoofrom'])";

您是否在表单中检查了收件人的文本框名称?可能输入错误。请了解邮件标题注入。这没有任何意义。因为已经有一个assignment
$to=…;
,因此isset调用始终为真(如果密钥存在,例如,它不为空).Check for empty…@bwoebi:的确。如果URL参数不存在,则分配将失败,并显示“undefined index”(未定义索引)错误消息。是的,我是这么说的:“(如果密钥存在,例如,它不是空的)”。顺便说一句。我想他不想检查表单是否被操纵,但是否所有字段都已填充。@bwoebi:but(s)他也应该检查一下。例如,通过“发件人”字段插入额外的头并向其他人发送垃圾邮件很容易。
$from= "From: trim($_POST['spoofrom'])";