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配置php-fpm启动参数及配置详解
Nov 04 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
Oct 08 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 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购物网站支付paypal使用方法
2010/11/28 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
原生js封装添加class,删除class的实例
2017/11/06 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Java分治归并排序算法实例详解
2017/12/12 Python
Python3 中文文件读写方法
2018/01/23 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
Python连接Impala实现步骤解析
2020/08/04 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
九年级语文教学反思
2014/02/04 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
2014年招生工作总结
2014/11/26 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
高二英语教学反思
2016/03/03 职场文书