本文介绍在Linux云虚拟主机和轻云服务器上使用Zend_Mail发送邮件的方法。
背景信息
Zend_Mail默认通过stream_socket_client
函数实现邮件的文本内容的创建和发送。Linux云虚拟主机或轻云服务器只支持通过fsockopen
函数发送邮件,禁用了stream_socket_client
函数。您可以参考本文修改Zend_Mail程序中的默认函数,实现在Linux云虚拟主机或轻云服务器上使用Zend_Mail发送邮件。
操作步骤
- 修改Zend_Mail中的默认
stream_socket_client
函数。
- 在本地主机打开Zend Framework中的library/Zend/Mail/protocol目录。
- 找到Abstract.php文件,使用文件编辑器打开Abstract.php文件。
- 在Abstract.php文件中,找到
protected function _connect($remote)
方法,修改默认函数stream_socket_client
。默认函数
stream_socket_client
示例,如下所示:
$this->_socket = @stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION);
修改后的函数示例,如下所示:
$this->_socket = @fsockopen($remote, 邮件服务器端口, $errorNum, $errstr, self::TIMEOUT_CONNECTION);
说明 一般邮件服务器默认端口为25,请根据您的实际端口值替换示例中的邮件服务器端口。
- 启动fsockopen函数。
- 登录云虚拟主机管理页面。
- 找到待开启fsockopen函数的主机,单击对应操作列的管理。
- 在左侧导航栏,选择。
- 在PHP.INI设置页面的PHP函数设置区域,将PHP函数fsockopen设置:设置为启动。
- 单击保存设置。
- 使用Zend_Mail发送邮件。
- 在您的网站程序PHP文件中编写邮件信息的配置代码。
您可以参考本文提供的样例编写您的代码,如下所示:
<?php
require_once 'Zend/Mail.php';
require_once 'Zend/Mail/Transport/Smtp.php';
$tr=new Zend_Mail_Transport_Smtp("smtp.163.com",
array('auth'=>'login',
'port'=> '25',
//发件人邮箱和密码
'username'=>'xxxx@163.com',
'password'=>'xxxxx'));
$mail = new Zend_Mail('UTF-8');
$mail->setSubject('This is a test
email');
$mail->setFrom("<a
style="FONT-FAMILY: 微软雅黑,Microsoft YaHei; FONT-SIZE: 14px;
TEXT-DECORATION: underline"
href="mailto:xxxx@163.com",'aaa'">xxxx@163.com",'aaa');
//发件人邮箱
$mail->addTo("<a
style="FONT-FAMILY: 微软雅黑,Microsoft YaHei; FONT-SIZE: 14px;
TEXT-DECORATION: underline" href="mailto:xxxx@126.com",'aaa'">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();
?>
- 通过FTP客户端将您的网站程序上传到云虚拟主机。
- 打开浏览器,访问该PHP文件生成的网页。
如果网页访问成功,则邮件发送成功,表示设置生效,您可以通过Zend_Mail方式发送邮件。
在文档使用中是否遇到以下问题
更多建议
匿名提交