PHP邮件发送类PHPMailer用法实例详解

本文实例讲述了PHP邮件发送类PHPMailer用法,并详细讲述了其具体的操作步骤。分享给大家供大家参考。具体步骤如下:

1.在服务器安装 sendmail

sudo apt-get install sendmail

2.启动 sendmail

sudo /etc/init.d/sendmail start

3.修改 php.ini

[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = me@example.com

4.Function sendMail函数如下

<?php
/* 调用PHPMailer发送电邮
* @param String $receiver   收件人
* @param String $sender    发件人
* @param String $sender_name 发件人名称如为空则用发件人地址代替
* @param String $subject   邮件主题
* @param String $content   邮件内容
* @param boolean $ishtml    是否html电邮
* @param Array  $attachements 附件
* @return boolean
*/
function sendMail($receiver, $sender, $sender_name, $subject, $content, $ishtml=true, $attachments=array()) {
  include_once "class-phpmailer.php";  

  if(empty($receiver) || empty($sender) || empty($subject) || empty($content)){
    return false;
  } 

  $mail = new PHPMailer();  

  //$mail->IsSMTP();        // 经smtp发送
  //$mail->Host = "smtp.gmail.com"; // SMTP 服务器
  //$mail->Port = 465;       // SMTP 端口
  //$mail->SMTPSecure = 'ssl';   // 加密方式
  //$mail->SMTPAuth = true;     // 打开SMTP认证
  //$mail->Username = "username";  // 用户名
  //$mail->Password = "password";  // 密码 

  $mail->IsMail();         // using PHP mail() function 有可能會出現這封郵件可能不是由以下使用者所傳送的提示 

  $mail->From = $sender;      // 发信人
  $mail->FromName = $sender_name;  // 发信人别名
  $mail->AddReplyTo($sender);    // 回覆人
  $mail->AddAddress($receiver);   // 收信人  

  // 以html方式发送
  if($ishtml){
    $mail->IsHTML(true);
  } 

  // 发送附件
  if($attachments){
    if(is_array($attachments)){
      $send_attachments = array(); 

      $tmp_attachments = array_slice($attachments,0,1);
      if(!is_array(array_pop($tmp_attachments))){
        if(isset($attachments['path'])){
          array_push($send_attachments, $attachments);
        }else{
          foreach($attachments as $attachment){
            array_push($send_attachments, array('path'=>$attachment));
          }
        }
      }else{
        $send_attachments = $attachments;
      } 

      foreach($send_attachments as $attachment){
        $attachment['name'] = isset($attachment['name'])? $attachment['name'] : null;
        $attachment['encoding'] = isset($attachment['encoding'])? $attachment['encoding'] : 'base64';
        $attachment['type'] = isset($attachment['type'])? $attachment['type'] : 'application/octet-stream';
        if(isset($attachment['path']) && file_exists($attachment['path'])){
          $mail->AddAttachment($attachment['path'],$attachment['name'],$attachment['encoding'],$attachment['type']);
        }
      }
    }elseif(is_string($attachments)){
      if(file_exists($attachments)){
        $mail->AddAttachment($attachments);
      }
    }
  } 

  $mail->Subject = $subject; // 邮件标题
  $mail->Body   = $content; // 邮件內容
  return $mail->Send();
} 

// DEMO示例如下:
$receiver = 'receiver@test.com';
$sender = 'sender@test.com';
$sender_name = 'sender name';
$subject = 'subjecct';
$content = 'content'; 

// 四种格式都可以
$attachments = 'attachment1.jpg';
$attachments = array('path'=>'attachment1.jpg', 'name'=>'附件1.jpg');
$attachments = array('attachment1.jpg','attachment2.jpg','attachment3.jpg');
$attachments = array(
  array('path'=>'attachment1.jpg', 'name'=>'附件1.jpg'),
  array('path'=>'attachment2.jpg', 'name'=>'附件2.jpg'),
  array('path'=>'attachment3.jpg', 'name'=>'附件3.jpg'),
);
$flag = sendMail($receiver, $sender, $sender_name, $subject, $content, true, $attachments);
echo $flag;
?>

源码点击此处本站下载。

希望本文所述对大家PHP程序设计的学习有所帮助。

(0)

相关推荐

  • phpmailer在服务器上不能正常发送邮件的解决办法

    phpmailer本身是一个很不错的开源邮件类,也非常的易用简单,就是偶尔会出现程序上传到服务器上不能发送邮件的情况,在之前也有同学问过我这个问题,当时的时候总是不以为然,今天终于让我碰上了,用phpmailer 在本地测试正常,上传到服务器上就不行了,当然了是用的SMTP方式,最终确定是fsockopen 函数惹的祸,因为安全原因fsockopen 和pfsockopen 经常被服务器端关闭.解决方法如下: 而代之的应该是 stream_socket_client()函数,不过他的参数有一点不

  • ThinkPHP利用PHPMailer实现邮件发送实现代码

    本文所使用的是ThinkPHP 2.1版和 PHPMailer 5.1版.(后者建议您直接从本博下载,因为我们不能保证下面的代码在所有版本的PHPMailer中都能正常运行) 下面是具体步骤: 第一步.添加PHPMailer类库 点击此处下载将下载后的文件解压,将PHPMail目录移动至ThinkPHP目录中的Vendor内.(请确保class.phpmailer.php文件就在ThinkPHPVendorPHPMailerclass.phpmailer.php) 第二步.添加发送邮件函数 在项

  • 163的邮件用phpmailer发送(实例详解)

    复制代码 代码如下: <?phprequire_once('../class.phpmailer.php');$mail= new PHPMailer();$body= "我终于发送邮件成功了!呵呵!<br/><a>http://news.qq.com/a/20111115/000792.htm?qq=0&ADUIN=594873950&ADSESSION=1321316731&ADTAG=CLIENT.QQ.3493_.0</a>

  • phpmailer发送gmail邮件实例详解

    复制代码 代码如下: <html><head><title>PHPMailer - SMTP (Gmail) basic test</title></head><body><?php//error_reporting(E_ALL);error_reporting(E_STRICT);date_default_timezone_set('America/Toronto');require_once('../class.phpmai

  • PHP使用PHPMailer发送邮件的简单使用方法

    最近需要用到发送邮件的功能,原本是用PHP自带的mail()函数发送的.php mail()这个方法非常简单.方便.易用,但是除了网易邮箱.QQ邮箱.GMAIL邮箱等常用的邮箱可以收到之外,经测试HOTMAIL.TOM.LIVE等邮箱是收不到此类邮件的.所以就转而使用PHPMailer这个强大的邮件发送类.使用官方自带的一些例子,有些会报 Mailer Error: Could not instantiate mail function. 这个错误.参考了一些资料之后,还是自己写了一个方法.代码

  • PHPMailer发送邮件

    PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及图片附件,前提要设置好邮件服务器就能实现邮件发送功能. HTML 首先我们先放置一个收件箱的输入框和一个发送邮件按钮: 收件人: <input type="text" class="input_text" id="email" name="email" value="@"/> <input type=&q

  • PHPMailer邮件发送的实现代码

    本机环境:LAMP(ubuntu12.10); SMTP服务器用的是stmp.163.com.刚开始对于这个还是蛋疼的,最先使用的是stmp.qq.com结果发的邮件都被腾讯当成垃圾邮件处理了发不出去, 怎么该内容都没过.然后我改成了stmp.gmail.com,然后打开谷歌邮箱的POP服务,但总无法验证成功.最后还是注册一个163,运行代码就成功了. 无痛苦,无压力~~ 代码如下: 复制代码 代码如下: <?php require("PHPMailer/class.phpmailer.p

  • phpmailer简单发送邮件的方法(附phpmailer源码下载)

    本文实例讲述了phpmailer简单发送邮件的方法.分享给大家供大家参考,具体如下: 首先,点击此处本站下载相应的php文件. 解压后有2个php文件(2个类)  1个html文件(API) 将2个php文件放到php项目中 简述:我这里是用一个163的邮箱发消息给126的邮箱 关键代码如下: <?php require 'class.phpmailer.php'; $mail = new PHPMailer(true); //建立邮件发送类 $mail->CharSet = "UT

  • PHP邮件发送类PHPMailer用法实例详解

    本文实例讲述了PHP邮件发送类PHPMailer用法,并详细讲述了其具体的操作步骤.分享给大家供大家参考.具体步骤如下: 1.在服务器安装 sendmail sudo apt-get install sendmail 2.启动 sendmail sudo /etc/init.d/sendmail start 3.修改 php.ini [mail function] SMTP = localhost smtp_port = 25 sendmail_from = me@example.com 4.F

  • ThinkPHP进程计数类Process用法实例详解

    本文实例讲述了ThinkPHP进程计数类Process用法.分享给大家供大家参考.具体如下: 项目中有一个需求:由于某一后台任务比较占带宽,所以要限制进程数.花了点时间,写了类,目前版本功能比较简单. Process.class.php文件如下: <?php /** * Process * * @package * @version $id$ * @copyright 2005-2011 SUCOP.COM * @author Dijia Huang <huangdijia@gmail.com

  • ES6 javascript中Class类继承用法实例详解

    本文实例讲述了ES6 javascript中Class类继承用法.分享给大家供大家参考,具体如下: 1. 基本用法 Class 之间可以通过extends关键字实现继承, 这比 ES5 的通过修改原型链实现继承, 要清晰和方便很多. class ColorPoint extends Point {} 上面代码定义了一个ColorPoint类, 该类通过extends关键字, 继承了Point类的所有属性和方法. 但是由于没有部署任何代码, 所以这两个类完全一样, 等于复制了一个Point类. 下

  • Android启动内置APK和动态发送接收自定义广播实例详解

    Android启动内置APK和动态发送接收自定义广播实例详解 工作中遇到这样一个需求,需要为按键添加一个亲情号,提供一个接口启动内置的APK,思考再三决定更改Framework,利用广播机制去实现. 一.代码动态自主启动内置APK 我们都知道Android系统为我们提供了很多服务管理类,PackageManager主要是管理应用程序包,通过它就可以获取应用程序信息并构建Intent,启动对应的应用.除此之外Android还未我们提供了一些对应的类来管理相关的xml文件,比如说可以通过Packag

  • Java中的instanceof关键字在Android中的用法实例详解

    在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念. instanceof大部分的概念是这样定义的:instanceof是Java的一个二元操作符,和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个栗子: String s = "I AM an Object!"; boolean isObj

  • Java类的继承实例详解(动力节点Java学院整理)

    一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的). 在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化: 1)对于  char.short.byte.int.long.float.double等基本数据类型的

  • java中静态导入机制用法实例详解

    java中静态导入机制用法实例详解 这里主要讲解了如何使用Java中静态机制的用法,这里提供了简单实例大家可以参考下. 静态常量类 在java开发中,我们会经常用到一些静态常量用于状态判断等操作.为了能够在多个地方复用这些常量,通常每个模块都会加一个常量类,举个简单的列子: import com.sky.OrderMouleConsstants; /** * Created by gantianxing on 2017/4/21. */ public class Test { public vo

  • C++ pair的用法实例详解

    C++ pair的用法实例详解 1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair. pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量. 2 make_pair函数 template pair make_pair(T1 a, T2 b)

  • Java设计模式之策略模式原理与用法实例详解

    本文实例讲述了Java设计模式之策略模式原理与用法.分享给大家供大家参考,具体如下: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.其中JDK里面的TreeSet类和TreeMap类就用到了策略模式.这两个类是带排序的集合类,其中排序的规则就相当于策略模式里定义的一系列算法,而集合类就相当于是策略模式里的环境类,供用户使用,用只知道TreeSet和TreeMap是带排序的,至于怎么排序的,是由排序的算法决定的. 策略模式

  • Java设计模式之装饰模式原理与用法实例详解

    本文实例讲述了Java设计模式之装饰模式原理与用法.分享给大家供大家参考,具体如下: 装饰模式能在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象.JDK中IO的设计就用到了装饰模式,通过过滤流对节点流进行包装来实现功能的扩展. 装饰模式的角色的组成: ① 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加工功能的对象.(InputStream.OutputStream) ② 具体构件(Concrete Co

随机推荐