찾다
php教程php手册php写的发送附件的程序实例

程序


error_reporting(63);
include('class.html_mime_mail.inc');

/***************************************
** Example of usage.
***************************************/
/***************************************
** Read the file background.gif into
** $backgrnd.
***************************************/
$filename = 'background.gif';
$backgrnd = fread($fp = fopen($filename, 'r'), filesize($filename));
fclose($fp);

/***************************************
** Read the file test.zip into $attachment.
***************************************/
$filename = 'example.zip';
$attachment = fread($fp = fopen($filename, 'r'), filesize($filename));
fclose($fp);

/***************************************
** Create the mail object. Optional headers
** argument. Do not put From: here, this
** will be added when $mail->send
***************************************/
$mail = new html_mime_mail("X-Mailer: Html Mime Mail Class\r\n");

/***************************************
** If sending an html email, then these
** two variables specify the text and
** html versions of the mail. Don't
** have to be named as these are. Just
** make sure the names tie in to the
** $mail->add_html() command further down.
***************************************/
$text = 'This is a test.';
$html = '

Success!

';

/***************************************
** Add the text, html and embedded images.
** Each embedded image has to be added
** using $mail->add_html_image() BEFORE
** calling $mail->add_html(). The name
** of the image should match exactly
** (case-sensitive) to the name in the html.
***************************************/
$mail->add_html_image($backgrnd, 'background.gif', 'image/gif');
$mail->add_html($html, $text);

/***************************************
** If not sending an html email, then
** this is used to set the plain text
** body of the email.
***************************************/
// $mail->body = 'fsss';

/***************************************
** This is used to add an attachment to
** the email.
***************************************/
$mail->add_attachment($attachment, 'example.zip', 'application/octet-stream');

/***************************************
** Builds the message.
***************************************/
$mail->build_message();

/***************************************
** Sends the message. $mail->build_message()
** is seperate to $mail->send so that the
** same email can be sent many times to
** differing recipients simply by putting
** $mail->send() in a loop.
***************************************/
$mail->send('','szw@phpexe.com', 'From Name', 'szw@phpexe.com', 'Subject','');

/***************************************
** Debug stuff. Entirely unnecessary.
***************************************/
echo '

'; <br>echo $mail->mime; <br>echo '
';
?>

class html_mime_mail{

var $headers;
var $body;
var $multipart;
var $mime;
var $html;
var $html_text;
var $html_images = array();
var $cids = array();
var $do_html;
var $parts = array();

/***************************************
** Constructor function. Sets the headers
** if supplied.
***************************************/
function html_mime_mail($headers = ''){
$this->headers = $headers;
}

/***************************************
** Adds a html part to the mail.
** Also replaces image names with
** content-id's.
***************************************/
function add_html($html, $text){
$this->do_html = 1;
$this->html = $html;
$this->html_text = $text;
if(is_array($this->html_images) AND count($this->html_images) > 0){
for($i=0; $ihtml_images); $i++){
$this->html = ereg_replace($this->html_images[$i]['name'], 'cid:'.$this->html_images[$i]['cid'], $this->html);
}
}
}

/***************************************
** Builds html part of email.
***************************************/
function build_html($orig_boundary){
$sec_boundary = '=_'.md5(uniqid(time()));
$thr_boundary = '=_'.md5(uniqid(time()));

if(!is_array($this->html_images)){
$this->multipart.= '--'.$orig_boundary."\r\n";
$this->multipart.= 'Content-Type: multipart/alternative; boundary="'.$sec_boundary."\"\r\n\r\n\r\n";

$this->multipart.= '--'.$sec_boundary."\r\n";
$this->multipart.= 'Content-Type: text/plain'."\r\n";
$this->multipart.= 'Content-Transfer-Encoding: 7bit'."\r\n\r\n";
$this->multipart.= $this->html_text."\r\n\r\n";

$this->multipart.= '--'.$sec_boundary."\r\n";
$this->multipart.= 'Content-Type: text/html'."\r\n";
$this->multipart.= 'Content-Transfer-Encoding: 7bit'."\r\n\r\n";
$this->multipart.= $this->html."\r\n\r\n";
$this->multipart.= '--'.$sec_boundary."--\r\n\r\n";
}else{
$this->multipart.= '--'.$orig_boundary."\r\n";
$this->multipart.= 'Content-Type: multipart/related; boundary="'.$sec_boundary."\"\r\n\r\n\r\n";

$this->multipart.= '--'.$sec_boundary."\r\n";
$this->multipart.= 'Content-Type: multipart/alternative; boundary="'.$thr_boundary."\"\r\n\r\n\r\n";

$this->multipart.= '--'.$thr_boundary."\r\n";
$this->multipart.= 'Content-Type: text/plain'."\r\n";
$this->multipart.= 'Content-Transfer-Encoding: 7bit'."\r\n\r\n";
$this->multipart.= $this->html_text."\r\n\r\n";

$this->multipart.= '--'.$thr_boundary."\r\n";
$this->multipart.= 'Content-Type: text/html'."\r\n";
$this->multipart.= 'Content-Transfer-Encoding: 7bit'."\r\n\r\n";
$this->multipart.= $this->html."\r\n\r\n";
$this->multipart.= '--'.$thr_boundary."--\r\n\r\n";

for($i=0; $ihtml_images); $i++){
$this->multipart.= '--'.$sec_boundary."\r\n";
$this->build_html_image($i);
}

$this->multipart.= "--".$sec_boundary."--\r\n\r\n";
}
}
/***************************************
** Adds an image to the list of embedded
** images.
***************************************/
function add_html_image($file, $name = '', $c_type='application/octet-stream'){
$this->html_images[] = array( 'body' => $file,
'name' => $name,
'c_type' => $c_type,
'cid' => md5(uniqid(time())) );
}


/***************************************
** Adds a file to the list of attachments.
***************************************/
function add_attachment($file, $name = '', $c_type='application/octet-stream'){
$this->parts[] = array( 'body' => $file,
'name' => $name,
'c_type' => $c_type );
}

/***************************************
** Builds an embedded image part of an
** html mail.
***************************************/
function build_html_image($i){
$this->multipart.= 'Content-Type: '.$this->html_images[$i]['c_type'];

if($this->html_images[$i]['name'] != '') $this->multipart .= '; name="'.$this->html_images[$i]['name']."\"\r\n";
else $this->multipart .= "\r\n";

$this->multipart.= 'Content-ID: html_images[$i]['cid'].">\r\n";
$this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";
$this->multipart.= chunk_split(base64_encode($this->html_images[$i]['body']))."\r\n";
}

/***************************************
** Builds a single part of a multipart
** message.
***************************************/
function build_part($i){
$message_part = '';
$message_part.= 'Content-Type: '.$this->parts[$i]['c_type'];
if($this->parts[$i]['name'] != '')
$message_part .= '; name="'.$this->parts[$i]['name']."\"\r\n";
else
$message_part .= "\r\n";

// Determine content encoding.
if($this->parts[$i]['c_type'] == 'text/plain'){
$message_part.= 'Content-Transfer-Encoding: 7bit'."\r\n\r\n";
$message_part.= $this->parts[$i]['body']."\r\n";
}else{
$message_part.= 'Content-Transfer-Encoding: base64'."\r\n";
$message_part.= 'Content-Disposition: attachment; filename="'.$this->parts[$i]['name']."\"\r\n\r\n";
$message_part.= chunk_split(base64_encode($this->parts[$i]['body']))."\r\n";
}

return $message_part;
}

/***************************************
** Builds the multipart message from the
** list ($this->parts).
***************************************/
function build_message(){
$boundary = '=_'.md5(uniqid(time()));

$this->headers.= "MIME-Version: 1.0\r\n";
$this->headers.= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
$this->multipart = '';
$this->multipart.= "This is a MIME encoded message.\r\nCreated by html_mime_mail.class.\r\nSee http://www.heyes-computing.net/scripts/ for a copy.\r\n\r\n";

if(isset($this->do_html) AND $this->do_html == 1) $this->build_html($boundary);
if(isset($this->body) AND $this->body != '') $this->parts[] = array('body' => $this->body, 'name' => '', 'c_type' => 'text/plain');

for($i=(count($this->parts)-1); $i>=0; $i--){
$this->multipart.= '--'.$boundary."\r\n".$this->build_part($i);
}

$this->mime = $this->multipart."--".$boundary."--\r\n";
}

/***************************************
** Sends the mail.
***************************************/
function send($to_name, $to_addr, $from_name, $from_addr, $subject = '', $headers = ''){

if($to_name != '') $to = '"'.$to_name.'" ';
else $to = $to_addr;
if($from_name != '') $from = '"'.$from_name.'" ';
else $from = $from_addr;
$this->headers.= 'From: '.$from."\r\n";
//$this->headers.= $headers;
mail($to, $subject, $this->mime, $this->headers);
}

/***************************************
** Use this method to deliver using direct
** smtp connection. Relies upon Manuel Lemos'
** smtp mail delivery class available at:
** http://phpclasses.upperdesign.com
**
** void smtp_send( string *Name* of smtp object,
** string From address,
** array To addresses,
** array Headers,
** string The body)
***************************************/
function smtp_send($smtp_obj, $from_addr, $to_addr){
global $$smtp_obj;
$smtp_obj = $$smtp_obj;

if(substr($this->headers, -2) == "\r\n") $this->headers = substr($this->headers,0,-2);
$this->headers = explode("\r\n", $this->headers);

$smtp_obj->sendmessage($from_addr, $to_addr, $this->headers, $this->mime);
}

} // End of class.
?>



성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구