首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

更新到php 7.1后,无法从PHP脚本发送邮件(邮件正文为空)

在将PHP版本更新到7.1后,如果遇到无法从PHP脚本发送邮件且邮件正文为空的问题,可能是由于以下几个原因造成的:

基础概念

  • SMTP:简单邮件传输协议,用于发送电子邮件。
  • PHP mail() 函数:PHP内置的函数,用于发送电子邮件。
  • PHPMailer:一个流行的第三方库,用于发送电子邮件,提供了比mail()函数更多的功能和灵活性。

可能的原因

  1. PHP配置更改:PHP 7.1可能更改了默认的邮件发送配置。
  2. 权限问题:运行PHP脚本的用户可能没有权限发送邮件。
  3. SMTP服务器配置:可能需要手动配置SMTP服务器信息。
  4. 邮件头问题:邮件头可能未正确设置,导致邮件正文为空。

解决方案

检查PHP配置

首先,检查php.ini文件中的mail相关配置:

代码语言:txt
复制
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = you@yourdomain.com
sendmail_path = /usr/sbin/sendmail -t -i

确保这些设置正确无误。

使用PHPMailer库

如果mail()函数仍然无法工作,可以考虑使用PHPMailer库。以下是一个简单的示例:

  1. 安装PHPMailer: 可以通过Composer安装PHPMailer:
  2. 安装PHPMailer: 可以通过Composer安装PHPMailer:
  3. 示例代码
  4. 示例代码

检查权限和日志

确保运行PHP脚本的用户有权限访问SMTP服务器,并查看PHP和SMTP服务器的日志文件,以便找到更详细的错误信息。

应用场景

  • 网站通知:自动发送订单确认、密码重置等通知。
  • 营销邮件:定期向订阅者发送促销信息。
  • 系统警报:服务器或应用程序出现问题时发送警报邮件。

通过以上步骤,应该能够解决PHP 7.1下无法发送邮件的问题。如果问题依然存在,建议进一步检查服务器环境和网络配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 PHP发送电子邮件

PHP 简易 E-Mail 通过 PHP 发送电子邮件的最简单的方式是发送一封文本 email。...这是邮件的内容。"; // 邮件正文 $from = "someonelse@example.com"; // 邮件发送者 $headers = "From:" ....php if (isset($_REQUEST['email'])) { // 如果接收到邮箱参数则发送邮件     // 发送邮件     $email = $_REQUEST['email'] ;...> 实例解释: 首先,检查是否填写了邮件输入框 如果未填写(比如在页面被首次访问时),输出 HTML 表单 如果已填写(在表单被填写后),从表单发送电子邮件 当填写完表单点击提交按钮后...,页面重新载入,可以看到邮件输入被重置,同时显示邮件发送成功的消息 注释:这个简易发送 e-mail 不安全,在本教程的下一章中,您将阅读到更多关于电子邮件脚本中的安全隐患,我们将为您讲解如何验证用户输入使它更安全

2.5K30

原创投稿 | Zabbix的编译安装并发送通知邮件

,如在脚本中引用路径时更方便,这里还是给它设置一个软链接: ln -s /usr/local/mysql-5.5.53-linux2.6-x86_64/ /usr/local/mysql 更改mysql...,此时修改其连接数据库的相关信息即可,默认连接的数据库即为本机的数据库,数据库即为zabbix,密码为空,所以将密码设置为前面创建的密码即可。...zabbix server默认支持多种发送通知的方式,其中就包含的有名为Email的方式,但经过多次尝试都未能实现让zabbix server发送通知邮件,所以这里使用zabbix调用外部脚本且借助公网...action zabbix中只有设置 了action,它才知道应该如何发送通知,如在什么条件下发送,通知通过哪个media type发送,发送给哪些人,发送的频率是怎么样的,发送的通知主题和正文是怎样的...这个从故障发生到zabbix发送通知消息的时长,取决于监控的item配置的检测时长和trigger判断条件,默认的http service的检测时长为1分钟,其判断条件为最大连续检测到3次失败即认为http

1.1K80
  • 针对银行钓鱼事件的分析

    相信不少人都有收到过钓鱼邮件的经历。然而,随着反垃圾邮件技术的更进,大多数这类邮件都会被系统自动屏蔽,而无法发送到用户邮箱。但是,大多数并不代表全部。下面的这个例子就是个很好的说明。...页面的内容是在警告用户,他们的计算机上的安全模块已过期,如果不及时更新到最新版本,银行将向他们发出246.67BRL的罚单(约$80.00)。 钓鱼邮件来自何处?...例如: X-PHP-Originating-Script - 邮件发送所使用的脚本语言 Message-ID - 显示托管脚本的网站 X-Mailer - 邮件发送所使用的程序及版本 大伙可能注意到了,...从以上头信息中我们可以得知,原始消息发送自add-from-server.php这个脚本,并且使用的是PHPMailer [1.73版本]。...我们不能确定,在网站上做垃圾SEO和发送钓鱼邮件的是否为同一攻击者,因为在此之前钓鱼攻击者对于发送垃圾SEO邮件的事并不知情。

    1K70

    php-邮件发送

    带着这些疑问参考一些技术文章后得出结论,使用mail()函数发送邮件就必须要有一台无需SMTP验证就可以发信的邮件服务器。...搭建 方法:用windows自带的IIS就可以,或者从网上下载其他的SMTP服务器软件。 结论:使用mail()函数发送邮件,就必须要有一台不需要验证的SMTP服务器。...二、使用封装SMTP协议的邮件类 这种方法就比较常见了,尤其对于广大自己没有服务器,从网上购买虚拟主机的同学,第一种方法不现实,所以还是自己使用SMTP协议来发送邮件吧。...\n"; } 如果从网上找的SMTP类都是高度封装的,所以使用起来比上面会更简单,但使用方法都是比较相似的。...结论:这种方式发送邮件无需装任何软件,只需要包含进来一个PHP类,然后多写几行配置代码,就可以了。

    1.5K20

    知识库Wiki-DokuWiki

    ,之后进行保存 4、检查是否正常发送邮件 管理-检查SMTP配置 输入接收邮件,点击发送,提示成功 5、完成用户注册,自动发送邮件 6.2、命名空间管理 为了更好的管理组织结构,管理空间,安装如下插件...,可以将插件下载后,上传安装 管理-扩展管理器-手动安装 6.3、上传文件限制 默认情况下,上传文件是有限制的,例如.txt文件是无法上传的 修改dokuwiki/conf/mime.conf配置文件...文件 添加: $conf['fnencode'] = 'utf-8'; 之后再次新建目录后,中文显示正常 文件下载,中文显示也正常了 7、操作页面 7.1、新增目录 命名空间其实就是dokuwiki...id=wiki:welcome” 在地址后添加“id=测试组:测试计划:测试文档” 修改后的访问地址为“http://IP:端口/dokuwiki/doku.php?...id=wiki:welcome&do=media” 在地址后添加“&ns=测试计划:测试文件” 修改后的访问地址为“http://IP:端口/dokuwiki/doku.php?

    2.4K20

    在LAMP架构中部署Zabbix监控系统及邮件报警机制

    php   phpinfo(); ?> 编写测试脚本,测试PHP能否连接数据库 php 在使用zabbix用户进行登录数据库时有时会出现登录失败的现象,这是因为里面有空用户占用导致本地用户无法登录,所以需要删除空用户 [root@localhost ~]# mysql -u zabbix...可以看到我在QQ邮箱中收到了一封邮件 [root@localhost ~]# vim /usr/lib/zabbix/alertscripts/mail.sh    #写一个发邮件的脚本,脚本路径一定要写对.../mail.sh 邮箱地址 "yun" "hahahahaha"        #发送格式为“地址”“标题”“内容” 六、配置zabbix邮件报警机制 1 选择报警媒介类型 2 选择管理用户...3 在动作配置项中定义报警邮件的发送形式 4 配置恢复操作后邮件的发送形式 七、测试,如果我关闭受监控的服务来模拟服务故障,zabbix一个会发送一封邮件提醒我,当我再次打开这个服务时表示这个服务已经被修复

    46720

    PHP实现自动发送邮件功能代码(qq 邮箱)

    PHP //邮件发送 require './mailer/class.phpmailer.php'; require '....QQ邮箱'; //邮件正文是否以html方式发送 $mail->isHTML(true); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称...发送邮件的一个测试用例"; //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) //第二参数为在邮件附件中该附件的名称 $mail->addAttachment...> 将发送邮件的代码和自动运行的代码结合起来,就可以实现邮件的自动发送: php //邮件发送 require '....> 程序运行结果为: 要去掉上面这些信息, 只保留“发送成功等信息” 需要在这个文件修改:class.smtp.PHP 最后得到结果显示如下: 这样就实现了邮件的自动发送。

    1.8K20

    如何修复WordPress发生的max_execution_time致命错误

    较新WordPress版本上的替代前端消息 最后,WordPress通常会向网站管理员发送一封电子邮件,说明插件或主题导致了致命错误。...如果您无法访问您的网站,您收到的致命错误电子邮件包含一个链接,用于在恢复模式下启动您的WordPress实例。...首先,请通过以下方法尽力确定问题出在哪里: 卸载最近安装的项目,尤其是在安装插件或主题或更新到最新版本的WordPress后立即发生错误时。...检查您的电子邮件收件箱以查看WordPress是否向您发送了有关致命错误的电子邮件。有时它们会首先包含有关哪个插件导致问题的信息。...如果您不想弄乱它,或者您无法增加最大执行时间,您必须联系您的托管服务提供商并要求他们为您增加它。

    5.2K00

    使用开源phpmailer发送邮件

    网上也有几篇教程,不过我是为了给自己的服务可以发送邮件给自己用,所以只是用phpmailer的base功能,不需要使用smtp。...我自己再定义一个mail.function.php的函数,里面new一个phpmailer的对象。...";     $mail->AltBody = "当HTML邮件内容无法显示的时候,显示此内容";     $mail->MsgHTML($body); //对邮件正文进行重新编码,保证中文内容不乱码...恭喜,邮件发送成功!";     } } 好吧,之前我是自己用PHP原生mail()函数写的邮件功能,但因为一直没看懂该如何对邮件正文进行重编码,导致邮件正文在部分收件工具中总是存在各种乱码情况。...需要用到发邮件的时候,只需要postmail($body);即可,当然,记得把mail.function.php给include进去。

    91400

    靶场实战(11):OSCP备考之VulnHub Insanity 1

    翻找SquirrelMail里的邮件,是空的,看来不仅RCE不行,信息泄露也不行,难道SquirrelMail这条路是断了?...02-02、Monitoring:回到Monitoring,发现是个网络拨测网站,如果网络不通就会发送告警邮件。...那么告警邮件中的HostOneMoreThink,应该是Monitoring在发送告警邮件时,去数据库查出来并写到邮件正文的吧?那最常见的漏洞不就是SQLi和XSS嘛。...构造双引号闭合的payloadOneMoreThink",结果告警邮件发不出来了,Monitoring是每分钟发送一封告警邮件的,但现在已经12:32了,告警邮件还停留在12:26。...应该是Monitoring在发送告警邮件时,去数据库查询Host Name时报错了所以查询失败,导致整个发送告警邮件的任务都失败了。太好了,发现SQLi漏洞。

    11210

    WordPress曝未经授权的密码重置漏洞(CVE-2017-8295 )

    背景 WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。截止2017年2月,Alexa排名前1000万的站点中约有27.5%使用该管理系统。...当生成一个密码重置邮件时应当是仅发送给与帐户相关联的电子邮件。...至于攻击者可以修改哪那一封电子邮件的头信息,这取决于服务器环境(参考PHP文档) 基于邮件服务器的配置,可能导致被修改过邮件头的恶意收件人/发件人地址的电子邮件发送给WordPress用户。...这使得攻击者能够在不需要进行交互就可以截取本该是需要进行交互才能进行的操作的密码重置邮件。 攻击场景: 如果攻击者知道用户的电子邮件地址。为了让密码重置邮件被服务器拒收,或者无法到达目标地址。...他们可以先对用户的电子邮件帐户进行DoS攻击(通过发送多个超过用户磁盘配额的大文件邮件或攻击该DNS服务器) 某些自动回复可能会附加有邮件发送副本 发送多封密码重置邮件给用户,迫使用户对这些没完没了的密码重置邮件进行回复

    1.9K100

    PHP借用Redis消息队列实现高并发下发送邮件功能

    2.php进程不建议常驻,因此,可以把一个进程的生命周期设置为1min,再借用cron来实现进程的重启 对接一个消息队列,把你要处理的任务放入消息队列,简单的可以用redis,复杂点的可以beanstalkd..., rabbitmq等 如果坚持用PHP实现,写CLI脚本去这个消息队列拿消息,拿到消息之后处理你的耗时任务 亦可使用其它技术实现,python,java,看你们团队的实际情况和技术栈 PS: PHP...4,进行调用步骤3的函数 5.在crontab进行指定php执行步骤4的函数,进行异步发送邮件 总结: 这个是因为php没有异步的功能,导致只能依靠linux的crontab进行异步 现在php...传统的操作方法是这样的: 用户输入邮件信息 服务器获取用户输入的数据,提交到第三方的邮件服务器 第三方邮件服务器发送邮件,返回处理结果 异步的处理邮件发送: 用户输入邮件相关信息...FIFO队列中的消息一经发送出去,便从队列里删除。如果由于网络原因消费者没有收到消息,或者消费者在处理这条消息的过程中崩溃了,就再也无法还原出这条消息。也就是说,FIFO队列不能保证消息会传递成功。

    1.1K30

    解决 PHP 的 mail() 发送邮件时出现乱码的问题

    cmhello主题的右边有一个“反馈与建议”功能,可以直接发送访客的建议信息到管理员的邮箱,但是邮件主题(subject)只要有中文就显示乱码,最近在升级这个主题,当然也要解决这个问题。...当用php的mail()函数发送邮件时,如果包含中文,标题产生乱码,需要做以下处理即可解决: 先用函数base64_encode() — 使用 MIME base64 对标题数据进行编码 标题字符串前加编码类型例如...标题字符串后加:?= 例如: 1 2 $subject = '邮件标题中文-php-mail()函数'; $subject = "=?UTF-8?B?"....对应的,邮件的header可以简单设置一下,以下举例说明发送一封邮件: 1 2 3 4 5 6 7 8 9 $mail = 'digdeeply@staff.sina.com.cn'; $text =..."邮件正文content……"; $subject = 'IVR 内置控制平台定时脚本运行SQL错误'; $subject = "=?

    1.7K10

    CentOS 7.3下Zabbix 4.0监控环境安装部署

    > 出现上图则PHP连通数据库完成。 为保证zabbix用户也可以登录数据库,若出现本地无法登录情况,解决方式如下。 使用root账户登录数据库。...smtp-auth=login 测试邮箱软件是否可用 echo "hello world" | mail -s "testmail" 377909726@qq.com //测试发信正常 2、编写邮件发送脚本...邮件发送触发脚本一定要写在zabbix指定的alterscripts目录下,后面直接指定脚本名称即可触发。...mailx.log chmod +x /usr/lib/zabbix/alertscripts/mailx.sh chown -R zabbix.zabbix /usr/lib/zabbix/ 测试发邮件脚本是否可以正常工作.../mailx.sh 377909726@qq.com "主题" "内容" 3、配置服务监控自动触发邮件发送脚本 4、在被监控主机模拟故障 关闭被监控主机的httpd服务,验证邮箱接收情况

    51020

    一次早期自动化构建的搭建过程

    ,可以直接写到crontab中定时自动运行 | |--buildall.sh // 完整的一次编译过程的控制脚本, 不包含更新代码,发送邮件的过程 | |-- buildres.xsl...(make.conf)生成全构建脚本build.sh的工具,编译环境的关键脚本 | |-- postmessage.pl // 发送邮件的工具(详见后边说明) | |-- readlog.pl...最后调用postmessage.pl,它会将发件箱中的所有邮件(*.mail)发送出去(成功发送后将删除原始邮件)...., 不包含更新代码,发送邮件的过程 1.6. build.qzone.isd.com 这是由几个简单的php页面构成的编译结果发布站点,需要在Apache的httpd.conf中作如下配置: <VirtualHost...上图页面的信息来自相应的buildres.xml 注:由于源码目录下文件可能会被手工增删或改动,有时有些信息文件无法正确读取,这时php会发出警告,这些都是可以忽略的,可以通过/usr/local/lib

    1.2K20
    领券