阿里云金牌合作伙伴-授权证书 长期稳定·永久朋友 产品专家1对1服务
阿里云购买咨询热线:158-0160-3153 凯铧互联客服

热门文章

阿里云常见售后问题集锦

虚拟主机(linux平台)使用php调用/usr/sbin/sendmail 发邮件无法收到,为何?

答:虚拟主机产品是无法通过sendmail组件来发出电子邮件的,但可以用Zend_Mail组件来发出电子邮件,以下是用Zend_Mail发送邮件方法
虚拟主机或轻云服务器上目前只支持通过 fsockopen的方式发送邮件。 Zend_Mail默认的发送邮件的方式是 stream_socket_client函数发送邮件的。虚拟主机或轻云服务器禁用了此函数。 所以无法直接使用 Zend_Mail发送邮件。 可以通过修改默认的 Zend_Mail发送邮件的方式,实现使用 Zend_Mail发送邮件的功能。
温馨提示:
您修改程序代码前对当前文件进行备份后在进行操作,避免误操作后影响网站程序正常运行。
修改方法: 下载 zend framework之后,打开 library/Zend/Mail/protocol 目录,打开 Abstract.php 文件, 找到 protected function _connect($remote) 方法: 将
$this->_socket = @stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION);
修改为
$this->_socket = @fsockopen($remote, 25, $errorNum, $errstr, self::TIMEOUT_CONNECTION);
请注意,这里 fsockopen 的第二个参数“25”是邮件服务器的端口,一般默认是25,如果是其他端口,请做相应的修改。 做上述修改之后,到主机控制台打开 fsockopen 函数: 凯铧互联
至此,主机的配置修改完毕。下面是测试代码:
'login', 'port'=> '25', 'username'=>'xxxx@163.com', 'password'=>'xxxxx')); //发件人邮箱和密码 $mail = new Zend_Mail('UTF-8'); $mail->setSubject('This is a test email'); $mail->setFrom("xxxx@163.com",'aaa'); //发件人邮箱 $mail->addTo("xxxx@126.com",'aaa'); //收件人邮箱 $mail->setBodyText(''); $mail->setBodyHtml("Test EmailTest email Test email "); if(false == $mail->send($tr) ) { echo ("fail"); } else { echo ("success"); } $tr->__destruct(); ?>
将上述代码中的发件人邮箱和收件人邮箱替换成您的邮箱。
然后把代码写入php文件,上传到主机,访问该网页,如果现实success,则发送邮件成功。检查邮件即可。
  • 我们邀请注册,享受VIP价格!

    阿里云代理商

    阿里云代理商凯铧互联提供阿里云服务器,云服务器解决方案,万网虚拟主机,阿里云邮箱,云数据库RDS,对象存储OSS,负载均衡,CDN、云盾安全,DDOS高防IP等产品的全国代买服务,直属会员+双重售后服务+更多优惠政策。