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简单封装了一些常用JS操作
Feb 25 PHP
php split汉字
Jun 05 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
PHP计算加权平均数的方法
Jul 16 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
php PDO异常处理详解
Nov 20 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
PHP正则表达式之RCEService回溯
Apr 11 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读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
一段批量给页面上的控件赋值js
2010/06/19 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
如何搜索查找并解决Django相关的问题
2014/06/30 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
矿泉水广告词
2014/03/20 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
学校创先争优活动总结
2014/08/28 职场文书
创优争先心得体会
2014/09/11 职场文书
装配出错检讨书
2014/09/23 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
干部培训简讯
2015/07/20 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫