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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 线程池参数配置详解[通俗易懂]

    线程池参数配置详解[通俗易懂]/***Createsanew{@codeThreadPoolExecutor}withthegiveninitial*parameters.**@paramcorePoolSizethenumberofthreadstokeepinthepool,even*iftheyareidle,unless{@codeallowCoreThreadTimeOut}isset.

    2022年6月28日
    24
  • 卡尔曼滤波系列——(二)扩展卡尔曼滤波「建议收藏」

    卡尔曼滤波系列——(二)扩展卡尔曼滤波「建议收藏」更新日志:2020.02.13:修改了第三节推导中的公式错误1简介扩展卡尔曼滤波(ExtendedKalmanFilter,EKF)是标准卡尔曼滤波在非线性情形下的一种扩展形式,它是一种高效率的递归滤波器(自回归滤波器)。EKF的基本思想是利用泰勒级数展开将非线性系统线性化,然后采用卡尔曼滤波框架对信号进行滤波,因此它是一种次优滤波。2算法介绍2.1泰勒级数…

    2022年6月16日
    60
  • java 分布式计算框架_java分布式系统框架的分类「建议收藏」

    java 分布式计算框架_java分布式系统框架的分类「建议收藏」鲁班学院java架构师成长路线随着电商行业的崛起,越来越多的人为了省事更习惯网购,今天我们就来熟悉Java分布式系统中的Dubbo,Dubbo就是来解决Java分布式系统中间的子系统之间相互调用相互协作的一个框架。在Dubbo之前就有一个Java分布式系统框架RPC(远程过程调用),多个子系统之间需要实现相互调用必须要借助网络来表达调用的语义和传达调用的数据,RPC采用客户机/服务器模式。请求程序…

    2022年5月31日
    56
  • 最小二乘法简明推导过程

    最小二乘法简明推导过程最小二乘法推导最小二乘法公式J(θ)=1m∑i=1m(y(i)−hθ(x(i)))2J(\theta)=\frac1m\sum_{i=1}^m(y^{(i)}-h_{\theta}(x^{(i)}))^2J(θ)=m1​i=1∑m​(y(i)−hθ​(x(i)))2证明1.假设设数据中未被考虑进来的特征和人为无法控制的噪声为ε\varepsilonε。即y(i)=θTx(i)…

    2022年5月13日
    66
  • 玩转跨境电商_个人如何做跨境电商

    玩转跨境电商_个人如何做跨境电商近日日本最大二手交易平台Mercari日前对外宣布,将与阿里巴巴合作启动跨境销售。不久后,Mercari将登陆淘宝和闲鱼,消费者下单后,由电商服务平台BEENOS负责代购,随后将货物发往国内。Mercari作为日本最大二手交易平台,一直以来在亚洲范围内都久负盛名,而闲鱼作为国内首屈一指的二手电商平台,二者的联合碰撞起的全新火花,能打开跨境二手电商的新链路吗?二手与跨境,电商后意识形态的新鸾凤自流量为尊的互联网商业态势席卷之后,电商在不停演变,从最初的图书到衣物综合,再到各垂直电商、社交电商…

    2022年10月4日
    3
  • 提高计算机软件速度的方法,提高电脑速度的10个有效方法

    提高计算机软件速度的方法,提高电脑速度的10个有效方法电脑已经离不开我们的工作、生活。当我们使用电脑的时候是不是经常遇到打开网页速度和运行某款游戏的时候速度很慢,大部分人处理的办法就是责骂自己的网速不行,电脑配置太低问题,或者我们选择重装系统、格式化等方法,但用不了多久还是会变慢。有些时候并不是这些问题导致电脑速度变慢的。学会以下10个基础的电脑加速方法,有助于我们即便用普通配置的电脑,也可以健步如飞。方法1,桌面上尽量干净。有一次我去同学那…

    2022年6月3日
    40

发表回复

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

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