php使用pear_smtp发送邮件


Posted in PHP onApril 15, 2016

PHP自带的mail函数比较蛋疼,在win下配置了sendmail还是无法发送邮件。而使用第三方的pear/mail可以直接通过smtp连接邮件发送服务器。如(smtp.163.com)。从而没有必要在本机上安装sendmail等类似软件。
确保PEAR Mail包已经安装。

<?php 
 require_once "vendor/autoload.php"; 
  
 $from = "test<test@163.com>"; 
 $to = "test <test@outlook.com>"; 
 $subject = "Hi!"; 
 $body = "Hi,\n\nHow are you?"; 
  
 $host = "smtp.163.com"; 
$port = "25"; 
 $username = "test@163.com"; 
 $password = "test123"; 
  
 $headers = array ('From' => $from, 
  'To' => $to, 
  'Subject' => $subject); 
 $smtp = Mail::factory('smtp', 
  array ('host' => $host, 
   'port' => $port, 
   'auth' => true, 
  // 'debug'=>true, 
   'username' => $username, 
   'password' => $password)); 
  
 $mail = $smtp->send($to, $headers, $body); 
  
 if (PEAR::isError($mail)) { 
  echo("<p>" . $mail->getMessage() . "</p>"); 
 } else { 
  echo("<p>Message successfully sent!</p>"); 
 } 
 ?>

 这是非加密方式。
 PHPer 多数使用 mail 函数来发送邮件,但我们可以使用其他的 SMTP 服务器来发送,这里推荐使用 PEAR's mail package 来发送邮件。

$subject = "This mail is sent from SMTP.";
$mail_body = "This is the body of the mail which is sent using SMTP.";
$from = "From: From Name <fromaddress@xpertdeveloper.com>"; 
$to = "To: To Name <toaddress@xpertdeveloper.com>"; 
$receiver = "toaddress@xpertdeveloper.com"; 
 
// Setting up the headers
$headers["From"] = $from; 
$headers["To"] = $to; 
$headers["Subject"] = $subject; 
$headers["Reply-To"] = "reply@address.com"; 
$headers["Content-Type"] = "text/plain; charset=ISO-2022-JP"; 
$headers["Return-path"] = "returnpath@address.com"; 
 
// Setting up the SMTP setting
$smtp_info["host"] = "smtp.server.com"; 
$smtp_info["port"] = "25"; 
$smtp_info["auth"] = true; 
$smtp_info["username"] = "smtp_user"; 
$smtp_info["password"] = "smtp_password"; 
 
// Creating the PEAR mail object :
$mail_obj =& Mail::factory("smtp", $smtp_info); 
 
// Sending the mail now
$mail_sent = $mail_obj->send($receiver, $headers, $mail_body); 
 
// If any error the see for that here:
if (PEAR::isError($mail_sent)) { print($mail_sent->getMessage());}

第三个案例:

在使用以下源代码前,请配置好pear的路径,下载net_smtp包
在php.ini文件中根据你的操作系统选择不同的设置方法

; UNIX: "/path1:/path2" 
include_path = ".:./php/pear"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\pear"
require 'Net/SMTP.php';
$host = '126.com';//smtp服务器的ip或域名
$username= 'arcow';//登陆smtp服务器的用户名
$password= 'secret';//登陆smtp服务器的密码
$from = 'arcow@126.com';  //谁发的邮件
$rcpt = array('test@test.com', 'arcow@126.com');//可设多个接收者
$subj = "Subject: 你是谁\n";//主题
$body = "test it";//邮件内容
/* 建立一个类 */
if (! ($smtp = new Net_SMTP($host))) {
  die("无法初始化类Net_SMTP!\n");
}
/* 开始连接SMTP服务器*/
if (PEAR::isError($e = $smtp->connect())) {
  die($e->getMessage() . "\n");
}
/* smtp需要身份验证 */
$smtp->auth($username,$password,"PLAIN");
/*设置发送者邮箱 */
if (PEAR::isError($smtp->mailFrom($from))) {
  die("无法设置发送者邮箱为 <$from>\n");
}
/* 设置接收邮件者 */
foreach ($rcpt as $to) {
  if (PEAR::isError($res = $smtp->rcptTo($to))) {
    die("邮件无法投递到 <$to>: " . $res->getMessage() . "\n");
  }
}
/* 开始发送邮件内容 */
if (PEAR::isError($smtp->data($subj . "\r\n" . $body))) {
  die("Unable to send data\n");
}
/* 断开连接 */
$smtp->disconnect();
echo "发送成功!";
?>

以上就是本文的全部内容,php利用pear_smtp发送邮件的三个案例,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
Windows下的PHP5.0详解
Nov 18 PHP
mysql limit查询优化分析
Nov 12 PHP
PHP 字符串 小常识
Jun 05 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
PHP生成树的方法
Jul 28 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 #PHP
php生成图片验证码的方法
Apr 15 #PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 #PHP
php上传大文件设置方法
Apr 14 #PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 #PHP
java模拟PHP的pack和unpack类
Apr 13 #PHP
php远程下载类分享
Apr 13 #PHP
You might like
php中用文本文件做数据库的实现方法
2008/03/27 PHP
php 进度条实现代码
2009/03/10 PHP
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php网站地图生成类示例
2014/01/13 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
jquery获取input表单值的代码
2010/04/19 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
Python中Qslider控件实操详解
2021/02/20 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
模具设计与制造专业推荐信
2014/02/16 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
《社戏》教学反思
2014/04/15 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书