PHP多种形式发送邮件

1.使用mail()函数没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发。这个按照各个系统不同而定。使用参考手册。2.使用管道的形式昨天刚测试成功,使用本地的

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

1. 使用 mail() 函数 

没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发。这个按照各个系统不同而定。使用参考手册。 

2. 使用管道的形式 

昨天刚测试成功,使用本地的qmail来发送邮件。 

 1 /* 使用qmail发送邮件函数 */  
 2 function send_check_mail($email, $subject,$uid,$buffer)  
 3 {  
 4  $command =  "/var/qmail/bin/qmail-inject ".$email; //qmail程式地址,$email是要发送的地址  
 5  $handle = popen($command, "w"); //打开管道  http://www.cnblogs.com/roucheng/
 6  if (!$handle) {  
 7   return false;  
 8  }   
 9   
10  $from = "webmaster@unixsky.net"; //发件人  
11  fwrite($handle, "From: ".$from."\n"); //往管道写数据  
12  fwrite($handle, "Return-Path: ".$from."\n");  
13  fwrite($handle, "To: ".$uid."\n");  
14  fwrite($handle, "Subject: ".$subject."\n");  
15  fwrite($handle, "Mime-Version: 1.0\n");  
16  fwrite($handle, "Content-Type: text/html; charset=\"gb2312\"\n\n");  
17  fwrite($handle, $buffer."\n");  
18  pclose($handle); //关闭管道  
19   
20  return true;  
21 }  
22   
23 ------------------测试发送邮件:  
24   
25 //发送邮件  
26   
27 $subject = "测试邮件";  
28   
29 $uid = $_POST[’uid’]; //from信息  
30 $content = "<html><body>".$u_email   
31   
32    ." 你好!<br><br>谢谢,本邮件测试!<br</body></html>"; //内容信息  
33   
34 $u_email = "heiyeluren@yahoo.com.cn"; //发送到的邮箱  
35 if (send_check_mail($u_email, $subject, $uid, $content)) {  
36   
37  echo "恭喜!发送投票邮件到你的邮箱!<br><br>请检查你的邮箱:<font color=#CC0033>".$u_email." </font><br><br>". $close;  
38  } else {  
39   
40  echo "非常不幸,发送投票邮件到你的邮箱失败,请重试或联系研发人员。<br><br>". $close;  
41   
42 }

当然,也能使用相同的方法来处理sendmail的进程来发送邮件。 

下面代码示例: 

 1 <?php  
 2 $pp = popen("/usr/sbin/sendmail -t", "w") or die("Cannot fork sendmail");  
 3 fputs($pp, "To: sterling@designmultimedia.com\r\n");  
 4 fputs($pp, "Reply-to: $senders_email\r\n");  
 5 fputs($pp, "From: $senders_email\r\n");  
 6 fputs($pp, "Subject The Results of your form\r\n\r\n");  
 7 fputs($pp, "$senders_email sent the fllowing comments:\r\n");  
 8 fputs($pp, $comments);  
 9 pclose($pp) or die("Cannot close pipe to sendmail");  
10 ?>  

其实这种管道的方法比较底层,取决于你所调用程式的稳定性。所以是一种可选的发送邮件的方式。 

3. 使用phpmailer类 

是个开源的发送邮件类,主站:http://phpmailer.sourceforge.net 

里面是两个文件,一个是class.smtp.php,更有以个是class.phpmailer.php
另外加上官方网站的使用方法: 

Examples using phpmailer
1. Advanced ExampleThis demonstrates sending out multiple email messages with binary attachments from a MySQL database with multipart/alternative support.

 1 require("class.phpmailer.php");  
 2   
 3 $mail = new phpmailer();  
 4   
 5 $mail->From     = "list@example.com";  
 6 $mail->FromName = "List manager";  
 7 $mail->Host     = "smtp1.example.com;smtp2.example.com";  
 8 $mail->Mailer   = "smtp";  
 9   
10 @MYSQL_CONNECT("localhost","root","password");  
11 @mysql_select_db("my_company");  
12 $query?=?SELECT full_name, email,?hoto?ROM employee?HERE?d=$id";  
13 $result??MYSQL_QUERY($query);  
14   
15 while ($row = mysql_fetch_array ($result))  
16 {  
17     // HTML body  
18     $body  = "Hello <font size=\"4\">" . $row["full_name"] . "</font>, <p>";  
19     $body .= "<i>Your</i> personal photograph to this message.<p>";  
20     $body .= "Sincerely, <br>";  
21     $body .= "phpmailer List manager";  
22   
23     // Plain text body (for mail clients that cannot read HTML)  
24     $text_body  = "Hello " . $row["full_name"] . ", \n\n";  
25     $text_body .= "Your personal photograph to this message.\n\n";  
26     $text_body .= "Sincerely, \n";  
27     $text_body .= "phpmailer List manager";  
28   
29     $mail->Body    = $body;  
30     $mail->AltBody = $text_body;  
31     $mail->AddAddress($row["email"], $row["full_name"]);  
32     $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");  
33   
34     if(!$mail->Send())  
35         echo "There has been a mail error sending to " . $row["email"] . "<br>";  
36   
37     // Clear all addresses and attachments for next loop  
38     $mail->ClearAddresses();  
39     $mail->ClearAttachments();  
40 }  

2. Extending phpmailerExtending classes with inheritance is one of the most powerful features of object-oriented programming. It allows you to make changes to the original class for your own personal use without hacking the original classes. Plus, it is very easy to do. I’ve provided an example: 

Here’s a class that extends the phpmailer class and sets the defaults for the particular site: 
PHP include file: mail.inc.php 

require(“class.phpmailer.php”); 

 1 class my_phpmailer extends phpmailer {  
 2     // Set default variables for all new objects  
 3     var $From     = "from@example.com";  
 4     var $FromName = "Mailer";  
 5     var $Host     = "smtp1.example.com;smtp2.example.com";  
 6     var $Mailer   = "smtp";                         // Alternative to IsSMTP()  
 7     var $WordWrap = 75;  
 8   
 9     // Replace the default error_handler  
10     function error_handler($msg) {  
11         print("My Site Error");  
12         print("Description:");  
13         printf("%s", $msg);  
14         exit;  
15     }  
16   
17     // Create an additional function  
18     function do_something($something) {  
19         // Place your new code here  
20     }  
21 }  

Now here’s a normal PHP page in the site, which will have all the defaults set above: 
Normal PHP file: mail_test.php 

 1 require("mail.inc.php");  
 2   
 3 // Instantiate your new class  
 4 $mail = new my_phpmailer;  
 5   
 6 // Now you only need to add the necessary stuff  
 7 $mail->AddAddress("josh@example.com", "Josh Adams");  
 8 $mail->Subject = "Here is the subject";  
 9 $mail->Body    = "This is the message body";  
10 $mail->AddAttachment("c:/temp/11-10-00.zip", "new_name.zip");  // optional name  
11   
12 if(!$mail->Send())  
13 {  
14    echo "There was an error sending the message";  
15    exit;  
16 }  
17   
18 echo "Message was sent successfully";  

4. 使用PEAR::Net_SMTP组件 

PEAR真是个好东西,可能非常多人都不怎么用,至少我目前使用他的DB类,发送邮件类都不错。 

需要Net_SMTP类,能去 http://pear.php.net 下载,Net_SMTP类的使用手册: 

http://pear.php.net/manual/en/package.networking.net-smtp.php 

我使用上面几个类,这个是最佳的,不管是速度还是别的,不过操作涉及到一些简单的smtp协议。 
http://www.cnblogs.com/roucheng/
我的使用代码:

 1 //------------------------------------------  
 2   
 3 require_once ’Net/SMTP.php’; //加载类库  
 4   
 5   
 6 $subject = "测试邮件";  
 7   
 8 $uid = $_POST[’uid’]; //from信息  
 9 $content = "<html><body>".$u_email   
10   
11    ." 你好!<br><br>谢谢,本邮件测试!<br</body></html>"; //内容信息  
12   
13 $u_email = "heiyeluren@yahoo.com.cn"; //发送到的邮箱  
14   
15 $smtp = new Net_SMTP(’192.168.0.1’); //smtp服务器  
16 $smtp->connect(); //连接服务器  
17 $smtp->helo(’unixsky.net’); //发送HELO信息给服务器  
18 $smtp->mailFrom(’heiyeluren@unixsky.net’); //发件人地址  
19 $smtp->rcptTo($u_email); //收件人地址  
20 $date = date(’r’); //获取发信日期  
21 $smtp->data("Date: $date\r\nFrom: vote@eyou.net\r\nTo: $u_email\r\nSubject: $subject\r\nContent-Type: text/html; charset=\"gb2312\"\r\n\r\n$content\r\n"); //添加发送数据并且发送  
22 $smtp->disconnect(); //关闭连接  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120721.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月21日 上午7:00
下一篇 2021年12月21日 上午7:00


相关推荐

  • 漫谈词向量

    漫谈词向量原文:Onwordembeddings作者:SebastianRuder译者:KK4SBB审校:王艺责编:何永灿,关注人工智能,投稿请联系heyc@csdn.net或微信号289416419目录词向量的来历词向量模型语言建模概述经典的神经语言模型C&amp;W模型Word2VecCBOWSkip-gram非监督式学习得到…

    2022年5月22日
    42
  • android toast位置_android studio toast不显示

    android toast位置_android studio toast不显示关键词:Android,Appium,Python,Toast1、什么是toast?toast是一个浮动的显示块,在Android中主要用于提示信息,超时后退出,常用于提示一些不是那么重要的信息;如果是重要的信息,会使用notification。toast比较难定位,一来因为它时间很短,一般3秒左右;二来toast元素一般不写在XML中,代码中直接去调用。Toast.makeText(getApp…

    2025年11月8日
    6
  • i2c接口可以接哪些器件_单片机i2c接口

    i2c接口可以接哪些器件_单片机i2c接口高通项目在lk阶段配置I2C6作充电接口

    2022年10月19日
    4
  • StringBuffer与StringBuilder的区别_String

    StringBuffer与StringBuilder的区别_String1:StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。2:HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。3:StringBuffer和StringBuilder类的区..

    2025年11月25日
    4
  • 485转网口的moxa(虚拟机com口和主机com口)

    影响我们一生百倍差距的四大效应观察者效应:你的世界是什么样是由你的观察决定的.这个效应是在【潜能突破】研习营课堂上发现的,我们有个练习叫三生万物,每个人都会成为一次观察者角色,当大家在成为其他角色时,他们总是发现不了自己的问题,无论我们怎样提醒都没有用,无法改变原有的模式,当他们进入观察者模式,看见其他人的行为所造成的后果时,立刻恍然大悟,主动注意自己的形为,在当下立刻发生改变.刚开始我以为这是个…

    2022年4月17日
    53
  • RPC接口实现_一个接口多个实现

    RPC接口实现_一个接口多个实现1.RPC作用以目前的认识,RPC的作用:多个工程之间数据传输。2.逐步完成RPC接口实现第一步:编写thrift文件,语法格式和java不同。在布局分层里安排在了client层

    2022年10月13日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号