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 相关文章推荐
杏林同学录(一)
Oct 09 PHP
常用的php对象类型判断
Aug 27 PHP
PHP 操作文件的一些FAQ总结
Feb 12 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP环形链表实现方法示例
Sep 15 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
设定php简写功能的方法
Nov 28 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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程序--记数器
2006/10/09 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Python基于动态规划算法计算单词距离
2015/07/25 Python
Python Pillow Image Invert
2019/01/22 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
自我鉴定思想方面
2013/10/07 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
市场营销调查计划书
2014/05/02 职场文书
民事答辩状格式范文
2015/05/21 职场文书
篮球拉拉队口号
2015/12/25 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
解析目标检测之IoU
2021/06/26 Python
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS