本文实例讲述了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程序设计的学习有一定的借鉴价值。