本文实例讲述了php实现的发送带附件邮件类的方法,是一个非常实用的功能。分享给大家供大家参考。具体方法如下:
emailclass.php类文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
<?
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示例文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?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程序设计的学习有一定的借鉴价值。