php7.0发送注册验证邮件

FizzBlack 2016-08-20 04:01:17
之前我仿造http://www.helloweba.com/view-blog-228.html这个帖子,制作了一个接收注册信息后发送验证邮件的.php,但在运行是报错显示包含的smtp.class.php中调用了未定义函数,看了之后发现调用的是老版php使用的函数ereg()。我修改成了这样
$body = preg_replace("(^|(\r\n))(\.)", "\1.\3", $body);
$address = preg_replace(".*<(.+)>.*$", "\1", $address);
第一个的报错 preg_replace(): Unknown modifier '(',第二个报错只是换成了右括号,难道是这里的括号还需要加转义么。类似报错都是这种符号的,因为我是直接从ereg_replace改成preg的,是不是由于两者间的区别导致的?
...全文
162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-08-21
  • 打赏
  • 举报
回复
普通用户 是指你仅申请了 QQ 邮箱 你指可以在 QQ 或 QQ空间里发送邮件,不可以通过第三方工具通过该邮箱发送邮件 高级用户 是指你又实名化申请了发件邮箱,这样,腾讯就可清楚的知道你是否发送了违规邮件
FizzBlack 2016-08-21
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
用普通用户是不能通过 QQ 邮箱发邮件的
普通用户是指?那这段代码本身是不是没有什么问题了,那我直接按着大概的写,到时候移到服务器上的时候再调整邮件用户等就可以试着运行看看了吧?谢谢,麻烦了
xuzuning 2016-08-21
  • 打赏
  • 举报
回复
用普通用户是不能通过 QQ 邮箱发邮件的
FizzBlack 2016-08-21
  • 打赏
  • 举报
回复
谢谢回复,那个问题已经解决了。但是现在的情况是,邮件无法发送。我用if确认过,实例化之后的$smtp是有内容的,但是运行时显示发送失败,是我在smtp关联时出错了么?因为我暂时只是在localhost上,所以是使用的QQ的smtp,已经打开smtp服务了。以下是邮件发送相关的代码,用户名等变量的内容不会出错。谢谢帮助 $smtpserver = "smtp.qq.com"; //SMTP服务器,如:smtp.163.com $smtpserverport = 25; //SMTP服务器端口,一般为25 $smtpusermail = "###@qq.com"; //SMTP服务器的用户邮箱 $smtpuser = "###@qq.com"; $smtppass = "cenwhykjubwicahb"; //SMTP服务器的用户密码 $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //实例化邮件类 $emailtype = "HTML"; //信件类型,文本:text;网页:HTML $smtpemailto = $email; //接收邮件方,本例为注册用户的Email $smtpemailfrom = $smtpusermail; //发送邮件方,如xxx@163.com $emailsubject = "感谢注册,请尽快激活账户";//邮件标题 //邮件主体内容 $emailbody = "亲爱的".$username.":<br/>感谢您在我站注册了新帐号。<br/>请点击链接激活您的帐号。<br/> <a href='??/register/active.php?verify=".$token."' target='_blank'>??/register/active.php?verify=".$token."</a><br/> 如果以上链接无法点击,请将它复制到你的浏览器地址栏中进入访问,该链接10分钟内有效。"; //发送邮件 $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype); if($rs==1){ echo "<script>alert('恭喜,注册成功,请在10分钟内激活');location.href='index.php';</script>"; }else{ echo "<script>alert('对不起,注册失败。');location.href='register.html';</script>"; }
xuzuning 2016-08-20
  • 打赏
  • 举报
回复
$body = preg_replace("/(^|(\r\n))(\.)/", "\1.\3", $body); ereg 的规则串不要定界符 preg 的规则串则需要定界符 并且定界符可自行指定 你 "(^|(\r\n))(\.)" 中的那一对圆括号被解释成了定界符,所以就出错了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧