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 相关文章推荐
apache rewrite_module模块使用教程
Jan 10 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
php 常用算法和时间复杂度
Jul 01 PHP
PHP入门之常量简介和系统常量
May 12 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
php使用cookie保存登录用户名的方法
Jan 26 PHP
php截取字符串函数分享
Feb 02 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 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
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php正则表达式学习笔记
2015/11/13 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
Django之路由层的实现
2019/09/09 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
python装饰器代码深入讲解
2021/03/01 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
运动会广播稿300字
2014/01/10 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
家长对孩子评语
2014/01/30 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis