PHP实现Email发送尝试(仍有问题)

PHP学习 cyanprobe 10年前 (2015-08-13) 7546次浏览 已收录 8个评论

前言:

话说某天我收到了火狼婆婆的邮件,竟然是尼玛java的反动思想,JAVA编写的邮件发送实例,还带一个嘲笑的图片…怒了,虽然我是PHP渣,但是你这也太猖狂了。so,决定我也写一个邮件发送的小程序。
可能编程思想有严重错误,方法也不是很精通,希望各位朋友指出吐槽!
bj2_副本

执行思想:

虽然我不知道PHP中定时执行任务是怎么实现的,但是我想了想应该是时间戳计算出秒数,然后sleep休眠一段时间执行,这应该比循环效率略高,但是问了问别人sleep函数在客户端浏览器关闭后失效,据说大多数PHP函数都是这样,虽然我不知道为啥,不过我们可以通过——ignore_user_abort();来屏蔽忽略浏览器关闭,然后用——set_time_limit(0);设定PHP脚本无最大失效时间。

主体:

 <?php
$sends=$_POST["sends"];
$subject=$_POST["subject"];
$time=$_POST["time"];
$stime=$_POST["stime"];
if(@$_POST["subject"]==""&&$_POST["sends"]==""&&$_POST["friends"]==""){
 echo"<html>
<form action='mail.php' name='sends' method='POST'action='mail.php'>
您的主题:<input type='text' name='subject'></br>
收件人邮箱:<input type='text' name='friends'></br>
您的邮件内容:<input type='text' name='message' style='width:500px;height:400px'>
</br>您要设定的发送日期<input type='text'name='time'> (规则为2015-01-01)</br>
发送时间:<input type='text'name='stime'style='width:100px;height:30'> (规则为 23:08:01)
</br><input type='submit' value='提交定时发送'>
</form>
</html> ";}else{
$one=strtotime(date('Y-m-d H:i:s'));//下unix下的时间戳
$endtime=strtotime($time.$stime);
$cle = $endtime - $one;//获得秒位时间差
ignore_user_abort();//忽略浏览器关闭
set_time_limit(0);//脚本无时间执行限制
sleep($cle);//程序延时执行
mail('$friends', '$subgect', '$sends');//执行发送
}
?>

忽略前台登陆,SESSION验证之类的小登陆验证的东东,大体实现就是这个,话说我真的很菜逼,希望各各湿胸指导。


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP实现Email发送尝试(仍有问题)
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(8)个小伙伴在吐槽
  1. 哈哈,厉害哦。你们程序员居然还能掐架?哈哈
    姜辰2015-08-13 10:26 回复
  2. :mrgreen: 程序猿
    秦川博客2015-08-13 22:30 回复
  3. sleep运行在服务器端。既然已经开始运行了,没到条件是不停止的,怎么会在客户端关闭就失效呢?应该只有超时这个瓶颈而已,只要set_time_limit(0);之后就行了!
    男生女生金版2015-08-20 12:54 回复
    • cyanprobe
      我看了很多人的说法,目测是关闭失效,自己写的时候也是浏览器一直在加载状态。 :oops:
      凶恶的方块2015-08-20 15:04 回复
  4. 哈哈。你可以cronb定时发送的。
    Jeremy2015-09-03 19:30 回复