SpeedPHP电子邮件扩展类
发布于:2022-01-17 09:50:54
#1 starlight36
首先感谢论坛jiayan41提供的Email邮件发送类程序!
http://speedphp.com/bbs/thread-577-1-1.html本人进行了修改,使之成为了SpeedPHP的标准扩展程序,将spEmail.php文件放置在SpeedPHP/Extensions/spEmail.php位置即可,配置选项可在spConfig.php里面进行设置。设置项如下:
'ext' => array( // 扩展使用的配置根目录
'spEmail' => array( //邮件扩展的基本设置
'debug' => TRUE, //调试模式
'host_name' => '163.com', //邮件主机名
'smtp_host' => 'smtp.163.com', //SMTP服务器
'smtp_port' => '25', //SMTP端口
'auth' => TRUE, //身份验证
'from' => 'admin@163.com', //发件邮箱
'user' => 'admin', //用户名
'pass' => 'pass', //密码
'log_file' => '', //日志文件
'time_out' => 30, //超时时间
),
),
在控制器中可以使用如下代码(action)进行测试:
function _email() {
$mail = spClass('spEmail');
$mailsubject = "SpeedPHP邮件扩展";//邮件主题
$mailbody = " SpeedPHP邮件扩展
";//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
$mail->sendmail('收件人邮箱@email.com', $mailsubject, $mailbody, $mailtype);
}
下载:
spEmail.zip
该贴已经同步到 starlight36的微博
2011-02-10 13:02:26
#2 jake
不错,很标准的扩展方式。:handshake 推荐!
2011-02-10 13:08:13
#3 jiayan41
starlight36 果真是高人啊,早点认识你就好了,那样我就可以用上speedphp标准Email扩展了,哈哈 :handshake
2011-02-12 10:27:13
#4 gonten
好啊,正缺这个
2011-02-14 11:58:02
#5 jake
:D 再来感谢一下,今天的项目就用到楼主的类。
2011-02-23 20:35:10
#6 vsxp
正点,收藏了。
2011-03-10 17:06:49
#7 梦里梦外
回复 1 starlight36 发现了一个bug,参数debug的设置无效!
即无论在配置设置debug为true或false结果都相当于true
if( !empty($params['debug']) )$this->debug = $params['debug'];
原因就在于上面这行代码
当debug为true时,empty判断为结果为true,if后面语句不执行;
当debug为false时,empty判断为结果仍旧为true,if后面语句不执行;
(如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。)
建议改为
$this->debug = isset($params['debug']) ? $params['debug'] : $this->debug;
其他赋值语句正常,但其他赋值语句也可以采用这种格式!
2011-04-01 12:00:32
#8 ookangzheng
支持下~~
2011-04-02 11:50:14
#9 jake
回复 starlight36
发现了一个bug,参数debug的设置无效!
即无论在配置设置debug为true或false结果都相 ...
梦里梦外 发表于 2011-4-1 12:00 
对,的确不能用empty :)
2011-04-02 12:27:17
#10 lovebible
怎样让发送邮件的编码格式为UTF-8呢?? 希望有个能改编码的选项!!
2011-04-15 21:37:46
#11 微博评论
回复@LoveBible:呃。。这个默认就是UTF-8的。。
来自 starlight36 的新浪微博
2011-04-16 10:15:10
#12 lovebible
这个类默认不是UTF-8~ 怎么改?
2011-04-17 18:48:51
#13 dhs789520
Trying to mx1.mail.139.com:25
Warning: Cannot connect to mx host mx1.mail.139.com
Error: Connection timed out (110)
Trying to mx2.mail.139.com:25
Warning: Cannot connect to mx host mx2.mail.139.com
Error: Connection timed out (110)
Trying to mx3.mail.139.com:25
Warning: Cannot connect to mx host mx3.mail.139.com
Error: Connection timed out (110)
Error: Cannot connect to any mx hosts (mx1.mail.139.com, mx2.mail.139.com, mx3.mail.139.com)
为什么老是连接不上服务器呢,难道是因为我是外国空间??
2011-04-21 04:34:44
#14 fengxuan
多谢了插件作者,debug的bug也建议相当好。
2011-05-18 16:15:18
#15 yijuninchina
哈哈,很标准哦,顶你一个!
2011-06-21 10:50:51
#16 yijuninchina
为什么我发送后,会输出一段这样的信息呢?能不能 去掉这些信息?
MIME-Version:1.0 Content-Type:text/html To: [email]jerry@765i.com[/email] From: [email]yijuninchina@163.com[/email] Subject: 注册激活邮件 Date: Tue, 21 Jun 2011 03:14:01 +0000 X-Mailer:By Redhat (PHP/5.2.6) Message-ID: <[email]20110621031401.209336.yijuninchina@163.com[/email]> ok
2011-06-21 11:17:20
#17 yijuninchina
哈哈,自己找到了,修改一下 94和95行,把那两个echo 注释掉就可以了。
支持作者!
2011-06-21 11:30:41
#18 霸气千秋
:lol顶起,收藏了,
2011-07-19 22:59:14
#19 hygzs
不错呀,看来SP里面好东西真不少
2011-08-30 15:20:58
#20 kilom
能用gmail发送吗?
2011-09-24 15:02:32
#21 鬼剑士
如何判断邮件发送是否成功???
2011-12-19 09:25:06
#22 樱桃大丸子
为什么,我总是提示
方法 sendmail 未定义
2012-02-11 06:18:01
#23 jake
樱桃大丸子 发表于 2012-2-11 06:18 
为什么,我总是提示
方法 sendmail 未定义
sendmail 在楼主发的文件spEmail.php里面的48行!
2012-02-11 17:41:22
#24 cgjcgs
Trying to smtp.qq.com:25
Error: Cannot connenct to relay host smtp.qq.com
Error: ����Ŀ������ܾ�����ӡ� (10061)
Error: Cannot send email to [email]cgjcgs@sina.com[/email]
MIME-Version:1.0 Content-Type:text/html To: [email]cgjcgs@sina.com[/email] From: [email]328538031@qq.com[/email]<[email]328538031@qq.com[/email]> Subject: SpeedPHP邮件扩展 Date: Mon, 11 Jun 2012 16:45:01 +0800 X-Mailer:By Redhat (PHP/5.2.5) Message-ID: <[email]20120611164501.2943.328538031@qq.com[/email]>
这是怎么回事 ?
2012-06-11 16:48:29
#25 jake
cgjcgs 发表于 2012-6-11 16:48 
Trying to smtp.qq.com:25
Error: Cannot connenct to relay host smtp.qq.com
Error: ����Ŀ���� ...
“Cannot connenct to relay host smtp.qq.com ”
链接不上QQ的SMTP服务器
2012-06-11 18:19:24
#26 cgjcgs
'ext' => array( // 扩展使用的配置根目录
'spEmail' => array( //邮件扩展的基本设置
'debug' => TRUE, //调试模式
'host_name' => '163.com', //邮件主机名
'smtp_host' => 'smtp.163.com', //SMTP服务器
'smtp_port' => '25', //SMTP端口
'auth' => TRUE, //身份验证
'from' => 'cgjcgs@163.com', //发件邮箱
'user' => 'cgjcgs', //用户名
'pass' => 'thisismywangyi', //密码
'log_file' => '', //日志文件
'time_out' => 30, //超时时间
),
), // 扩展使用的配置根目录
在speedphp / spconfig.php 里添加以上代码;
然后再控制控制器里添加以下代码,然后
#27 jake
按你给的错误提示,就是提示““Cannot connenct to relay host smtp.qq.com ”” 链接不到smtp.qq.com,
不相信自己可以找个google翻译的之类查查。
2012-06-12 09:22:34
#28 cgjcgs
这个我知道 我只是想知道流程是不是错了 流程没错就行 !
2012-06-12 09:26:27
#29 jake
cgjcgs 发表于 2012-6-12 09:26 
这个我知道 我只是想知道流程是不是错了 流程没错就行 !
你的流程没错,应该是错误提示错了。
2012-06-12 12:45:11
#30 小懒虫
用163.com 发送到 qq.com 550 错误怎么解决,有谁遇到过吗
2012-12-25 15:57:37
#31 bibodeng
正在找这个东西,需要发送邮件给客户,以验证帐号注册的
2013-03-15 08:49:51
#32 和珅
好东西,正需要。
2013-05-02 22:32:35
#33 和珅
好东西,正需要。
2013-05-02 22:33:34
#34 和珅
好东西,正需要。
2013-05-02 22:35:17
#35 沁枫
我用这个类发送邮件,本地测试站可以发送成功,上传到虚拟主机上就不行了,郁闷啊
开启调试一直提示:
Trying to smtp.163.com:25
Error: Cannot connenct to relay host smtp.163.com
Error: ()
Error: Cannot send email to [email]274606385@qq.com[/email]
求解答啊!:'(:'(
2013-09-09 10:27:20
#36 jake
沁枫 发表于 2013-9-9 10:27 
我用这个类发送邮件,本地测试站可以发送成功,上传到虚拟主机上就不行了,郁闷啊
开启调试一直提示:
Tryi ...
提示很清楚了,说是你的虚拟空间连接不上 smtp.163.com
2013-09-09 10:58:47
#37 沁枫
jake 发表于 2013-9-9 10:58 
提示很清楚了,说是你的虚拟空间连接不上 smtp.163.com
这个是需要虚拟主机那边帮我配置下什么吗?
jake老大{:soso_e183:}
2013-09-09 11:40:04
#38 jake
沁枫 发表于 2013-9-9 11:40 
这个是需要虚拟主机那边帮我配置下什么吗?
jake老大
连不上有很多原因,比如说不开放远程访问,不知道smtp的sockect访问等等。
2013-09-09 12:34:29
#39 沁枫
jake 发表于 2013-9-9 12:34 
连不上有很多原因,比如说不开放远程访问,不知道smtp的sockect访问等等。
终于找到原因了虚拟主机把 fsockopen 函数给禁用了,百度了下要用stream_socket_client函数代替,尼玛啊,刚把spEmail 里的
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
换成
$this->sock = @stream_socket_client("tcp://".$this->relay_host.":".$this->smtp_port, $errno, $errstr, $this->time_out);
就OK了。还是谢谢JACK老大哈,希望以后有同僚碰到这样的问题也能解决。
2013-09-09 14:04:44
#40 gnoynil
调试的时候出现 如下错误 请大使看看
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 250
Deprecated: Function ereg_replace() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 258
Deprecated: Function ereg_replace() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 259
Deprecated: Function ereg_replace() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 51
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 250
Deprecated: Function ereg_replace() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 258
Deprecated: Function ereg_replace() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 259
Trying to smtp.163.com:25
220 163.com Anti-spam GT for Coremail System (163com[20121016])
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
Connected to relay host smtp.163.com
> HELO 163.com
250 OK
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> AUTH LOGIN c3VuLTEyOS0yMw==
334 UGFzc3dvcmQ6
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> Nzg1MDgzOA==
235 Authentication successful
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> MAIL FROM:
250 Mail OK
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> RCPT TO:<[email]455786559@qq.com[/email]>
250 Mail OK
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> DATA
354 End data with .
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> MIME-Version:1.0 > Content-Type:text/html > To: [email]455786559@qq.com[/email] > From: [email]sun-129-23@163.com[/email] > Subject: SpeedPHP邮件扩展 > Date: Wed, 13 Aug 2014 16:11:04 +0800 > X-Mailer:By Redhat (PHP/5.4.7) > Message-ID: <[email]20140813161104.418931.sun-129-23@163.com[/email]> > >
SpeedPHP邮件扩展
>
. [EOM]
250 Mail OK queued as smtp7,C8CowEC5hVvgHetTkIhCAA--.84S2 1407917537
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
> QUIT
221 Bye
Deprecated: Function ereg() is deprecated in D:\xampp\htdocs\SpeedPHP\Extensions\spEmail.php on line 203
E-mail has been sent to <[email]455786559@qq.com[/email]>
Disconnected from remote host
MIME-Version:1.0 Content-Type:text/html To: [email]455786559@qq.com[/email] From: [email]sun-129-23@163.com[/email] Subject: SpeedPHP邮件扩展 Date: Wed, 13 Aug 2014 16:11:04 +0800 X-Mailer:By Redhat (PHP/5.4.7) Message-ID: <[email]20140813161104.418931.sun-129-23@163.com[/email]>
2014-08-13 16:15:20
#41 wo8818
也遇到同样的问题,但是邮件是发送成功的
百度到的说是ereg_replace 函数在高版本的PHP已经不使用了。
2014-10-02 16:40:11
#42 wo8818
可以这样解决,在使用PHP 5.3以后的版本中,把插件中这两个函数替换,就可以了
ereg 替换成 preg_match
ereg_replace 替换成 preg_replace
2014-10-02 16:53:38
#43 kao10324
这个能否设置发件人名称
2015-02-05 08:57:49
#44 kao10324
这个可以设置发件人名称吗
2015-02-10 15:03:35
#45 jake
应该可以
2015-02-10 17:06:43