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 相关文章推荐
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
php session劫持和防范的方法
Nov 12 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
php基于协程实现异步的方法分析
Jul 17 PHP
php和nginx交互实例讲解
Sep 24 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
详解js的六大数据类型
2016/12/27 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
用Python设计一个经典小游戏
2017/05/15 Python
使用python实现BLAST
2018/02/12 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
探矿工程师自荐信
2014/01/24 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
数学教师求职信范文
2015/03/20 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
门面租赁合同范文
2019/08/06 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
go:垃圾回收GC触发条件详解
2021/04/24 Golang
nginx rewrite功能使用场景分析
2022/05/30 Servers