在刚开始先配置好php.ini文件:
(1)我是在window 7 下面进行配置的。
(2)将扩展extension=php_openssl.dll,extension=php_sockets.dll打开
(3)设置allow_url_fopen = On,SMTP = localhost,smtp_port = 25,
当然sendmail_from,sendmail_path可以不用设置。但在Unix下sendmail_path需要设置
接下来用qq邮箱测试时需要设置:
(1)打开qq邮箱设置。
(2)然后在账户中将pop3/smtp勾选,保存设置。当然这里注意自己的邮箱和测试邮箱都要开启。
这里简单介绍一下HTTP状态含义一边测试使用,这是我测试浏览器显示的内容:
220 smtp.qq.com Esmtp QQ Mail Server
250-smtp.qq.com
250-PIPELINING
250-SIZE 52428800
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN SMTP用户验证
250-MAILCOMPRESS
250 8BITMIME
334 VXNlcm5hbWU6 输入使用BASE64编码的用户名
334 UGFzc3dvcmQ6 输入使用BASE64编码的密码
235 Authentication successful 验证通过
250 Ok 接受者邮件地址
250 Ok 告诉服务器我要开始发送邮件数据了
354 End data with .
250 Ok: queued as
邮件发送成功
下面便是发送邮件的一个SMTP类,经过本人修改,没问题了,class.mail.php:
<?php
define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
define('SMTP_STATUS_CONNECTED', 2, TRUE);
/**
* @desc SMTP 邮件服务器
* @param 服务器参数和邮件信息
*/
class p8_smtp
{
var $connection;
var $recipients;
var $headers;
var $timeout;
var $errors;
var $status;
var $body;
var $from;
var $host;
var $port;
var $helo;
var $auth;
var $user;
var $pass;
/**
* 参数为一个数组
* host SMTP 服务器的主机 默认:localhost
* port SMTP 服务器的端口 默认:25
* helo 发送HELO命令的名称 默认:localhost
* user SMTP 服务器的用户名 默认:空值
* pass SMTP 服务器的登陆密码 默认:空值
* timeout 连接超时的时间 默认:5
* @return bool
*/
function p8_smtp($params = array())
{
if(!defined('CRLF')) define('CRLF', "\r\n", TRUE);
$this->timeout = 5;