php实现的发送带附件邮件类实例

本文实例讲述了php实现的发送带附件邮件类的方法,是一个非常实用的功能。分享给大家供大家参考。具体方法如下:

emailclass.php类文件如下:

<?
class CMailFile {  

  var $subject;
  var $addr_to;
  var $text_body;
  var $text_encoded;
  var $mime_headers;
  var $mime_boundary = "--==================_846811060==_";
  var $smtp_headers;  

  function CMailFile($subject,$to,$from,$msg,$filename,$downfilename,$mimetype = "application/octet-stream",$mime_filename = false) {
    $this->subject = $subject;
    $this->addr_to = $to;
    $this->smtp_headers = $this->write_smtpheaders($from);
    $this->text_body = $this->write_body($msg);
    $this->text_encoded = $this->attach_file($filename,$downfilename,$mimetype,$mime_filename);
    $this->mime_headers = $this->write_mimeheaders($filename, $mime_filename);
  }  

  function attach_file($filename,$downfilename,$mimetype,$mime_filename) {
    $encoded = $this->encode_file($filename);
    if ($mime_filename) $filename = $mime_filename;
    $out = "--" . $this->mime_boundary . "\n";
    $out = $out . "Content-type: " . $mimetype . "; name=\"$filename\";\n";
    $out = $out . "Content-Transfer-Encoding: base64\n";
    $out = $out . "Content-disposition: attachment; filename=\"$downfilename\"\n\n";
    $out = $out . $encoded . "\n";
    $out = $out . "--" . $this->mime_boundary . "--" . "\n";
    return $out;
  }  

  function encode_file($sourcefile) {
    if (is_readable($sourcefile)) {
      $fd = fopen($sourcefile, "r");
      $contents = fread($fd, filesize($sourcefile));
      $encoded = chunk_split(base64_encode($contents));
      fclose($fd);
    }
    return $encoded;
  }  

  function sendfile() {
    $headers = $this->smtp_headers . $this->mime_headers;
    $message = $this->text_body . $this->text_encoded;
    mail($this->addr_to,$this->subject,$message,$headers);
  }  

  function write_body($msgtext) {
    $out = "--" . $this->mime_boundary . "\n";
    $out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
    $out = $out . $msgtext . "\n";
    return $out;
  }  

  function write_mimeheaders($filename, $mime_filename) {
    if ($mime_filename) $filename = $mime_filename;
    $out = "MIME-version: 1.0\n";
    $out = $out . "Content-type: multipart/mixed; ";
    $out = $out . "boundary=\"$this->mime_boundary\"\n";
    $out = $out . "Content-transfer-encoding: 7BIT\n";
    $out = $out . "X-attachments: $filename;\n\n";
    return $out;
  }  

  function write_smtpheaders($addr_from) {
    $out = "From: $addr_from\n";
    $out = $out . "Reply-To: $addr_from\n";
    $out = $out . "X-Mailer: PHP3\n";
    $out = $out . "X-Sender: $addr_from\n";
    return $out;
  }
}  

/*用法 - 例如:mimetype 为 "image/gif"
  $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype);
  $mailfile->sendfile(); 

  $subject -- 主题
  $sendto -- 收信人地址
  $replyto -- 回复地址
  $message -- 信件内容
  $filename -- 附件文件名
  $downfilename -- 下載的文件名
  $mimetype -- mime类型
*/
?> 

Demo示例文件如下:

<?php
  require_once('emailclass.php'); 

  //发送邮件 

  //主題
  $subject = "test send email"; 

  //收件人
  $sendto = 'abc@163.com'; 

  //發件人
  $replyto = 'cdf@163.com'; 

  //內容
  $message = "test send email content"; 

  //附件
  $filename = 'test.jpg'; 

  //附件類別
  $mimetype = "image/jpeg"; 

  $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$excelname,$mimetype);
  $mailfile->sendfile();
?>

相信本文所述对大家php程序设计的学习有一定的借鉴价值。

(0)

相关推荐

  • php邮件发送,php发送邮件的类

    smtp.class.php 这个是类把他做保存到一个文件中. 复制代码 代码如下: <?php class smtp { /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ var $sock; /* Con

  • php中通过smtp发邮件的类,测试通过

    smtp.php 复制代码 代码如下: <?php class smtp {     /* Public Variables */     var $smtp_port;     var $time_out;     var $host_name;     var $log_file;     var $relay_host;     var $debug;     var $auth;     var $user;     var $pass; /* Private Variables */ 

  • PHPMailer邮件类利用smtp.163.com发送邮件方法

    第一步:需要下载PHPMailer文件包phpmailer-1.73.tar.gz 来自开源社区: http://phpmailer.sourceforge.net/ 第二步:确认你的服务器系统已经支持socket 如下图,通过phpinfo();查看是否支持sockets 如果没有这一项就请注意: socket 是属于PHP扩展部分,编译时必须给定一个用于./configure --enable-sockets 的配置选项. 第三步:把文件解压到你的web服务器目录下,调用类就可以了,说明:首

  • 推荐个功能齐全的发送PHP邮件类

    PHP--下面这个类的功能则很强大,不但能发html格式的邮件,还可以发附件 使用方法: 复制代码 代码如下: <?    Include "email.class" $mail->setTo("a@a.com"); //收件人    $mail-> setCC("b@b.com,c@c.com"); //抄送    $mail-> setCC("d@b.com,e@c.com"); //秘密抄送   

  • PHP的类 功能齐全的发送邮件类

    复制代码 代码如下: <?php class Email { //---设置全局变量 var $mailTo = ""; // 收件人 var $mailCC = ""; // 抄送 var $mailBCC = ""; // 秘密抄送 var $mailFrom = ""; // 发件人 var $mailSubject = ""; // 主题 var $mailText = ""

  • PHPMailer使用教程(PHPMailer发送邮件实例分析)

    php虽然提供了mail()函数,但并不好用,而PHPMailer是一个不错的邮件发送工具,使用起来也是非常简单! 使用PHPMailer发送邮件: 复制代码 代码如下: <?php header("content-type:text/html;charset=utf-8"); ini_set("magic_quotes_runtime",0); require 'class.phpmailer.php'; try { $mail = new PHPMaile

  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法: 一.使用PHP内置的mail()函数 <?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文 mail($to,$subject,$message); 结果就直接报错,如下: Warning: mail() [function.m

  • 功能强大的PHP发邮件类

    本文示例为大家分享了强大的PHP发邮件类,供大家参考,具体内容如下 <?php class smtp { var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; var $sock; function smtp($relay_host = "", $smtp_port = 25,$auth

  • php win下Socket方式发邮件类

    复制代码 代码如下: <?php /* * php smtp发送邮件Scoket类 * ZhozPhpSmtpSendMail.php * Created on 2008/09/02 zhoz.com * @author zhoz * v 1.72 update 2008/09/26 zhoz.Com */ class ZhozPhpSmtpSendMail { //您的SMTP 服务器供应商,可以是域名或IP地址 var $smtp = ""; //SMTP需要要身份验证设值为

  • 功能齐全的PHP发送邮件类代码附详细说明

    <?php  class Email {  //---设置全局变量  var $mailTo = ""; // 收件人  var $mailCC = ""; // 抄送  var $mailBCC = ""; // 秘密抄送  var $mailFrom = ""; // 发件人  var $mailSubject = ""; // 主题  var $mailText = ""; 

随机推荐