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 采集程序原理分析篇
Mar 05 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
PHP批斗大会之缺失的异常详解
Jul 09 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
python插入排序算法实例分析
2015/07/03 Python
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
自荐信格式范文
2013/10/07 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
2015年调度员工作总结
2015/04/30 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
python某漫画app逆向
2021/03/31 Python
浅谈Web Storage API的使用
2021/06/23 Javascript