改程序的一个崩溃瞬间

发布于 2021-12-07  64 次阅读


事情经过:

刚开始我搞了一个程序API接口, 大致内容是这样的


    //邮件发送
	require_once ("send.php");//引入发件函数
	$title = "您收到一张表白卡“{$bbk_name1}表白{$bbk_name2}”";//邮件标题
	$name = "321乐云派送员";//邮件发送方
	$url = "https://321le.cn";//邮件发送方链接
	//邮件大图
	if($img == 'false'){
	    $img = "https://api.ixiaowai.cn/mcapi/mcapi.php";
	}else{
	    $img = zzzh($img);
	}
	$content = <<<html
        <div style="width: 550px;height: auto;border-radius: 5px;margin:0 auto;border:1px solid #ffb0b0;box-shadow: 0px 0px 20px #888888;position: relative;">
            <div style="background-image: url({$img});width:550px;height: 250px;background-size: cover;background-repeat: no-repeat;border-radius: 5px 5px 0px 0px;"></div>
            <div style="background-color:white;line-height:180%;padding:0 15px 12px;width:520px;margin:10px auto;color:#555555;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size:12px;margin-bottom: 0px;">
                <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt; </span>邮件服务,由<a style="text-decoration:none;color: #12ADDB;" href="{$url}" target="_blank">{$name}</a>提供</h2>
                <div style="padding:0 12px 0 12px;margin-top:18px">
                <p>发送时间:<span style="border-bottom:1px dashed #ccc;" t="5" times=" 20:42">{$time}</span></p> 
                    <p><strong>{$bbk_name1}</strong>表白<strong>{$bbk_name2}</strong>&nbsp;内容:</p>
                    <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{$bbk_content}</p>
                    <p>表白卡信息:</p>
                    <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">点赞:{$bbk_zan}<br />评论:{$bbk_pl}条<br />最新评论:“{$bbk_comment}”</p>
                </div>
            </div>
            <a style="text-decoration: none;color: rgb(255, 255, 255);width: 40%;text-align: center;background-color: rgb(255, 114, 114);height: 40px;line-height: 40px;box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3);display: block;margin: auto;" href="{$bbk_url}" target="_blank">查看表白卡</a>
            <div style="color:#8c8c8c;;font-family: 'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size: 10px;width: 100%;text-align: center;">
                <p>©2021 Copyright {$name}</p>
            </div>
        </div>
html;
 //邮件内容

	//发送并判断结果
	
	if(Funmail($toemail,$title,$content) == "1"){
        $arr = array(
            'code' => 200,
            'state' => '发送成功'
        );
	}else{ 
	    $arr = array(
            'code' => 501,
            'state' => '发送失败'
        );
	}
	//输出结果
	echo json_encode($arr);

?>

当这部分代码运行却显示

Parse error: syntax error, unexpected end of file in /www/wwwroot/api.zisy.cn/mail/api.php on line 148

我仔细看宝塔面板发现是这样的

问题在online148

排查错误

我仔细审查代码发现应该是这部分错误

然后我按照思路更改,思路:本来$content应该=一个字符串,但<<<html这个写法错误. 分析没错 应该这样改

把<<<html 换成`

再把内容的结尾html;//邮件内容这部分换成`;

然后改成这样

$content = `
        <div style="width: 550px;height: auto;border-radius: 5px;margin:0 auto;border:1px solid #ffb0b0;box-shadow: 0px 0px 20px #888888;position: relative;">
            <div style="background-image: url({$img});width:550px;height: 250px;background-size: cover;background-repeat: no-repeat;border-radius: 5px 5px 0px 0px;"></div>
            <div style="background-color:white;line-height:180%;padding:0 15px 12px;width:520px;margin:10px auto;color:#555555;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size:12px;margin-bottom: 0px;">
                <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt; </span>邮件服务,由<a style="text-decoration:none;color: #12ADDB;" href="{$url}" target="_blank">{$name}</a>提供</h2>
                <div style="padding:0 12px 0 12px;margin-top:18px">
                <p>发送时间:<span style="border-bottom:1px dashed #ccc;" t="5" times=" 20:42">{$time}</span></p> 
                    <p><strong>{$bbk_name1}</strong>表白<strong>{$bbk_name2}</strong>&nbsp;内容:</p>
                    <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{$bbk_content}</p>
                    <p>表白卡信息:</p>
                    <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">点赞:{$bbk_zan}<br />评论:{$bbk_pl}条<br />最新评论:“{$bbk_comment}”</p>
                </div>
            </div>
            <a style="text-decoration: none;color: rgb(255, 255, 255);width: 40%;text-align: center;background-color: rgb(255, 114, 114);height: 40px;line-height: 40px;box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3);display: block;margin: auto;" href="{$bbk_url}" target="_blank">查看表白卡</a>
            <div style="color:#8c8c8c;;font-family: 'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size: 10px;width: 100%;text-align: center;">
                <p>©2021 Copyright {$name}</p>
            </div>
        </div>
`;
//邮件内容

	//发送并判断结果
	
	if(Funmail($toemail,$title,$content) == "1"){
        $arr = array(
            'code' => 200,
            'state' => '发送成功'
        );
	}else{ 
	    $arr = array(
            'code' => 501,
            'state' => '发送失败'
        );
	}
	//输出结果
	echo json_encode($arr);

?>

改成这样 ,OK,不报错了 ,访问接口响应

{"code":501,"state":"\u53c2\u6570\u4e0d\u5408\u6cd5"}

终于可以完工了,然后我测试邮件发送

测试使用

测试发邮件,成功发送,但是发现一个问题

邮件发送没有主题,而且不能打开

不是吧啊sir,还有bug?

没办法继续改吧,我看了整整五遍,没发现问题在哪里,难道是系统出问题了?

找到原因

一般发送邮件是要配置邮件账户设置的…检查一下发邮件的函数 跟邮件的发送的设置信息 邮箱没有被拦截

然后我大概流程就先检查配置能否正常发送邮件,然后再检查传的数据是否对了,发送前先var_dump()一下发送的内容,看是否是表白内容,邮件里面看一下是不是有内容但没显示

后来仔细看发现文件都没错,然后我突然看到这行:

html;
//邮件内容

这部分貌似有毛病吧,哪里的问题呢?

我半信半疑试了一下在html;和//邮件内容这两个字段中间敲了一个回车发现

	$content = <<<html
        <div style="width: 550px;height: auto;border-radius: 5px;margin:0 auto;border:1px solid #ffb0b0;box-shadow: 0px 0px 20px #888888;position: relative;">
            <div style="background-image: url({$img});width:550px;height: 250px;background-size: cover;background-repeat: no-repeat;border-radius: 5px 5px 0px 0px;"></div>
            <div style="background-color:white;line-height:180%;padding:0 15px 12px;width:520px;margin:10px auto;color:#555555;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size:12px;margin-bottom: 0px;">
                <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt; </span>邮件服务,由<a style="text-decoration:none;color: #12ADDB;" href="{$url}" target="_blank">{$name}</a>提供</h2>
                <div style="padding:0 12px 0 12px;margin-top:18px">
                <p>发送时间:<span style="border-bottom:1px dashed #ccc;" t="5" times=" 20:42">{$time}</span></p> 
                    <p><strong>{$bbk_name1}</strong>表白<strong>{$bbk_name2}</strong>&nbsp;内容:</p>
                    <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{$bbk_content}</p>
                    <p>表白卡信息:</p>
                    <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">点赞:{$bbk_zan}<br />评论:{$bbk_pl}条<br />最新评论:“{$bbk_comment}”</p>
                </div>
            </div>
            <a style="text-decoration: none;color: rgb(255, 255, 255);width: 40%;text-align: center;background-color: rgb(255, 114, 114);height: 40px;line-height: 40px;box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3);display: block;margin: auto;" href="{$bbk_url}" target="_blank">查看表白卡</a>
            <div style="color:#8c8c8c;;font-family: 'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size: 10px;width: 100%;text-align: center;">
                <p>©2021 Copyright {$name}</p>
            </div>
        </div>
html;
//邮件内容

	//发送并判断结果
	
	if(Funmail($toemail,$title,$content) == "1"){
        $arr = array(
            'code' => 200,
            'state' => '发送成功'
        );
	}else{ 
	    $arr = array(
            'code' => 501,
            'state' => '发送失败'
        );
	}
	//输出结果
	echo json_encode($arr);

?>

然后我测试接口响应得到反馈值:

{"code":501,"state":"\u68c0\u6d4b\u5230\u5f53\u524d\u5ba2\u6237\u7aef\u6076\u610f\u8bf7\u6c4237\u6b21,2021-12-07 14:51:20\u540e\u5728\u8bd5\uff01"}

查看邮箱

他喵的可以允许了?!

我直接裂开好吧,一个回车的事我搞了大半天?

真的很无语唉(||๐_๐)

总结

不知道你们有没有遇到自己这样憨的崩溃瞬间,分享一下,不要只嘲笑我一个人❛‿˂̵✧


我喜欢你我喜欢你,世界上美好的东西不太多,立秋傍晚从河对岸吹来的风,和二十来岁笑起来要人命的你。