今天突然发现,本博客的注册功能不能用,我真怀具。我查了一下,服务器上php的mail函数不能用,这就意味着,注册的时候,不能发送邮件给你,这样你就无从知道密码了。发送邮件的东西,我刚接触php的时候,就搞过。当时觉得挺神奇,哈哈。没有搭建邮件服务器照样发邮件。不过是利用别人邮件服务器。phpmailer,smtp都是发送邮件的工具,好东西,我们当然可以拿来用。
一,用phpmailer发送邮件
<?php
include "class.phpmailer.php"; //包函邮件发送类
//邮件发送
function send_mail($frommail,$tomail,$subject,$body,$ccmail,$bccmail) {
$mail = new PHPMailer();
$mail->IsSMTP(); // 经smtp发送
$mail->Host = "smtp.163.com"; // SMTP 服务器
$mail->SMTPAuth = true; // 打开SMTP 认证
$mail->Username = "zhangyinghf@163.com"; // 用户名
$mail->Password = "**********"; // 密码
$mail->From = $frommail; // 发信人
$mail->FromName = "suport of 51yip"; // 发信人别名
$mail->AddAddress($tomail); // 收信人
if(!empty($ccmail)){
$mail->AddCC($ccmail); // cc收信人
}
if(!empty($bccmail)){
$mail->AddCC($bccmail); // bcc收信人
}
$mail->WordWrap = 50;
$mail->IsHTML(true); // 以html方式发送
$mail->Subject = $subject; // 邮件标题
$mail->Body = $body; // 邮件内空
$mail->AltBody = "请使用HTML方式查看邮件。";
return $mail->Send();
}
$result= send_mail("zhangyinghf@163.com","xtaying@gmail.com","test","test");
?>
phpmailer的功能很多,非常的全面,你可以打开class.phpmailer.php文件看一下,他里面带了好多功能,发邮件常用的功能它都有。大致如下:
- 在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
- 支持多种邮件编码包括:8bit,base64,binary和quoted-printable
- 支持SMTP验证
- 支持冗余SMTP服务器
- 支持带附件的邮件和Html格式的邮件
- 自定义邮件头
- 支持在邮件中嵌入图片
- 调试灵活
- 经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
- 可运行在任何平台之上
二,用smtp发送邮件
<?php include "smtp.php"; $smtpserver = "smtp.163.com"; //SMTP服务器 $smtpserverport = 25; //SMTP服务器端口 $smtpusermail = "zhangyinghf@163.com"; //SMTP服务器的用户邮箱 $smtpuser = "zhangyinghf@163.com"; //SMTP服务器的用户帐号 $smtppass = "*********"; //SMTP服务器的用户密码 $smtpemailto = "xtaying@gmail.com"; //发送给谁 $mailsubject = "账号分配"; //邮件主题 $mailbody = "<h1>this is a test"; //邮件内容 $mailtype = "HTML"; //邮件格式(HTML/TXT),TXT为文本邮件 $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证. $smtp->debug = true;//是否显示发送的调试信息 $mailsubject = mb_convert_encoding($mailsubject, "gb2312", "utf-8"); $mailbody = mb_convert_encoding($mailbody, "gb2312", "utf-8"); $result= $smtp->sendmail($smtpemailto, $smtpusermail,$mailsubject, $mailbody, $mailtype); ?>
smtp的功能少多了,不过能满足基本的需求。如果有需要的朋友,在这里留个言,我连同例子和工具一起发给你。
转载请注明作者:海底苍鹰
地址:http://blog.51yip.com/php/910.html/comment-page-1

我想要一个邮件发送的例子
我在我的新浪邮箱已经启动了
可以用我的新浪邮箱发送
以前有个例子给丢了
O(∩_∩)O谢谢 !
[回复]
张映 回复(2010年7月22日 13:02):
已经发了,按你的要求,改成用新浪的了。
[回复]
特别着急 回复(2011年11月25日 03:51):
我这怎么老是报错啊?两天了都,急死人了!
Could not instantiate mail function. Message could not be sent.
Mailer Error: Could not instantiate mail function.
[回复]
嗯。 我们公司那个会员注册功能也是用的smtp 很好用
这里在复习一下。 看看你的demo 呵呵。麻烦你给我发一份吧。谢谢!~
[回复]
哥哥! 你博客注册还是不能用,杯具
[回复]
张映 回复(2010年8月7日 15:00):
我在后台,看到你已经注册了。不能登录吗?我自己注册一个试试,可以注册的。
[回复]
搞了半天都没有搞成功哦,真不知道怎么搞了,能不能发一个实例给我,只要改一改就可以用的哪一种.谢谢
[回复]
张映 回复(2010年8月20日 15:57):
已发送到你的yahoo.cn邮箱
[回复]
有没有用phpmailer发送带附件的例子啊,最好前台和后台都有啊,谢谢了。
[回复]
张映 回复(2010年9月9日 09:34):
有的,公司没有,回去找找,到时发你邮箱。
[回复]
xujian2010 回复(2010年9月12日 09:14):
十分感谢你啊,我收到了你的邮件。以后有机会还会跟您多交流的啊,呵呵。
[回复]
xujian2010 回复(2010年9月13日 03:07):
我看了您发给我的例子,没有带附件上传啊,能否帮忙找下啊,急需,谢谢。
[回复]
张映 回复(2010年9月13日 05:42):
有附件的,phpmail.tar.gz(16k)
[回复]
xujian2010 回复(2010年9月13日 12:51):
呵呵,收到了。貌似您的附近忘记上传了吧,和上次的一样啊。麻烦您在发一次咯。
[回复]
张映 回复(2010年9月13日 15:25):
附件绝对有的,你看一下,是不是被你们的内部网络给过滤掉了。
[回复]
xujian2010 回复(2010年9月15日 06:48):
谢谢你啊。带附件上传的功能,我已经实现了,没有我想的那么复杂。还想请教您的是,您做过富文本内容的邮件发送吗?就是使用phpmailer啊,这个不是说支持富文本发送的嘛。有思路也可以啊,帮帮忙忙吧。谢谢了。
[回复]
whylhy 回复(2011年4月12日 09:24):
您可以发我一分嘛,带附件的邮件发送,我qq:641573418
[回复]
SyngeVan 回复(2010年10月12日 09:11):
也给我发一份上传附件的实例吧,谢谢。
[回复]
张映 回复(2011年4月12日 13:00):
已发送,最近工作比较忙,不好意思
[回复]
whylhy 回复(2011年4月12日 09:23):
您可以给我发一封吧
[回复]
我看了一下你写的这些文章,我觉得你真的很了不起,不知道你学php多久了?我也是从事php开发的,在开发的过程中遇到很多和发送邮件有关的问题,今天看你的这篇文章,简直是让人太高兴了。以前很多迷惑的东西,有可能以后就不再迷惑了。真的希望能够好好的请教一下你,呵呵!
[回复]
您好,我要用这个方式 发送带附件的 邮件,请求您的帮助
[回复]
我想要一份源代码 谢谢啦 最近也在研究这个东西
[回复]
能不能把你的例子给我发一份啊 我现在正在做这个发邮件的功能 很急 谢谢哦
[回复]
请问你的带附件的发邮件功能 ,附件可以下载不?给我发一份看下哈,谢谢了!
[回复]
我要
发我邮箱好不
wllabs@163.com
[回复]
张映 回复(2011年4月12日 12:59):
已发送,最近工作比较忙,很少看自己的博客,不好意思
[回复]
很好呀! 不过我发送不成功。你能给个例子吗?
[回复]
要源码的,附上邮件地址
[回复]
您好,我要用这个方式 发送带附件的 邮件,请求您的帮助
[回复]
张映 回复(2011年5月24日 14:54):
已发送
[回复]
你好,我一直在找一个网友留言后能把留言发送到邮箱的程序,找来找去找到你这里来了。能否给做一个实例发给我,我比较菜的。
[回复]
您好,在网上搜了很多关于phpmailer的例子,自己也尝试了几次,最后虽然是显示成功发送邮件,但是我查看我的邮箱,并没有什么邮件,想问一下这是为什么?
[回复]
张映 回复(2011年7月14日 09:30):
邮件已发送
[回复]
甜蜜教主 回复(2011年7月15日 01:01):
谢谢你的例子!我还有一个需求,就是邮件附带附件,不知道这个例子里有没有相应功能的代码???谢谢!
[回复]
感觉不错啊!怎么我写就不行呢?跟你写的差不多!怎么我运行就是显示Could not connect to SMTP host,我写的地址的对的~怎么就连接不上呢?你能否回答我的问题?
[回复]
张映 回复(2011年8月2日 06:06):
连sina,163是没有问题的,我测试都通过了。如果你是连的gmail的话,要加ssl的。有的邮件服务器,是不给通过程序去连他们邮件服务器的。
会给他们的mail服务器,带来很大的负担。
[回复]
您的smtp,用的不是joomla!自带的smtp类吧?或者版本不对?
[回复]
张映 回复(2011年8月15日 07:54):
smtp这个class是老早以前从网上下的,发邮件是没有问题的。不知道你指的版本不对是什么意思?
[回复]
另外你的博客的时间不对,差八个小时,应该修改一下php.ini的时区,或者在用到时间的地方date_default_timezone_set('PRC');
[回复]
张映 回复(2011年8月15日 07:55):
服务器放在美国,差了8个时区,这个没调
[回复]
谢谢你 ,请你也把 引用的那个类一起发给我 吧
[回复]
发我一份
[回复]
Could not instantiate mail function. Message could not be sent.
Mailer Error: Could not instantiate mail function.
这是哪儿有问题啊,怎么个情况啊,急死了
[回复]
张映 回复(2011年11月25日 08:08):
发了一个例子给你,改个用户和密码就能用,新浪,163测试没问题,如果有自己的邮件服务器,就用自己的。
[回复]
xiaoqiang 回复(2011年11月29日 16:07):
你在“用phpmailer发送邮件”,加多一句,include "smtp.php";
这些家火都是乱搞的,在5.1版本,phpmail里面包含了“smtp.php”
看下面
protected function SmtpSend($header, $body) {
require_once $this->PluginDir . 'class.smtp.php';
$bad_rcpt = array();
[回复]
张映 回复(2011年11月30日 02:11):
上面是二种方法,第二种方法,只要加载一个文件smtp.php就行了。不是将二个混在一起。
[回复]
博主能不能把例子和工具一起发给我啊? 谢谢!!!!!
[回复]
张映 回复(2011年12月31日 02:53):
发了
[回复]
你好~博主~请问可以发我一份么?
我是初学的。
这两天一直在研究这个邮件发送,在google上找了很久,都没有可以实现这个功能的--
有找到css-trics上一个contact form教程,但是照着做,也不能实现。
纠结不知道哪里出错
[回复]
张映 回复(2012年1月4日 02:03):
发了。
[回复]
Yoha 回复(2012年1月4日 04:45):
谢谢你的例子!
试了下,可以发送到填写进的邮箱了。:D
我前天搜索了下,发现发布出去的原因是由于服务器PHP没有开启“Support Socket”。之后联系了空间商,让他们帮换了个开启这个功能的服务器之后,就可以发送了。
不过总是发到邮箱的“垃圾箱”里。--!
“http://www.regalbali.com/contact.php” 这个是我最后做好的。
你邮件里提到“不能注册”,我不清楚这情况哦~没试过在这里注册。
[回复]
Yoha 回复(2012年1月4日 04:47):
是“发现发不出去的原因”, 上面写错了一个字:P
[回复]
能发我一份么!!! 能用QQ的邮箱发送么!?~
[回复]
找了可多资料,都不行,希望博主的这个可以成功,请给我也发一份吧!
834058309@qq.com
[回复]
张映 回复(2012年4月17日 04:28):
已发
[回复]
您好 下面是我的代码
$mail = new PHPMailer(); //new一个PHPMailer对象出来
$body = eregi_replace("[\]",'',$body); //对邮件内容进行必要的过滤
$mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP(); // 设定使用SMTP服务
// $mail->SMTPDebug = 1; // 启用SMTP调试功能
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = "ssl"; // 安全协议
$mail->Host = "192.168.1.203"; // SMTP 服务器
$mail->Port = 25; // SMTP服务器的端口号
$mail->Username = "13823769366@163.com"; // SMTP服务器用户名
$mail->Password = "yuhang8997950"; // SMTP服务器密码
$mail->From = "13823769366@163.com";
// $mail->SetFrom('admin@jiucool.com', '发件人名称');
// $mail->AddReplyTo("admin@jiucool.com","邮件回复人的名称");
$mail->Subject = $subject;
$mail->AltBody = "To view the message, please use an HTML compatible email viewer! - From http://www.jiucool.com"; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, "收件人名称");
运行时 错误信息:
eeCould not instantiate mail function. Mailer Error: Could not instantiate mail function.
请问大哥该如何决解 小弟刚接触用php发邮件 现在项目需要bcc 求大哥给我例子 小弟不胜感激
[回复]