本文实例讲述了php简单实现发送带附件的邮件。分享给大家供大家参考。具体如下:
下面是静态html代码:
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
|
< html > < head > < title >带附件的邮件发送</ title > </ head > < body > < form method = "post" name = "form1" action = "sendmail.php" ENCTYPE = "multipart/form-data" > < table > < tr > < td >发送人:</ td > < td >< input type = "text" name = "from" ></ td > </ tr > < tr > < td >收件人:</ td > < td >< input type = "text" name = "to" ></ td > </ tr > < tr > < td >邮件主题:</ td > < td >< input type = "text" name = "subject" ></ td > </ tr > < tr > < td >邮件内容:</ td > < td >< textarea name = "body" ></ textarea ></ td > </ tr > < tr > < td >附件上传:</ td > < td >< input type = "file" name = "upload_file" ></ td > </ tr > < tr > < td span = 2 > < input type = "submit" value = "提交" > < input type = "reset" value = "重置" > </ td > </ tr > </ table > </ form > </ body > </ html > |
sendmail.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
|
<?php //获得表单信息 $from = $_POST [ 'from' ]; $to = $_POST [ 'to' ]; $subject = $_POST [ 'subject' ]; $body = $_POST [ 'body' ]; // 定义分界线 $boundary = "345894369383" ; //分界线是一串无规律的字符 //设置header $header = "Content-type: multipart/mixed; boundary= $boundary/r/n" ; $header .= "From:$from/r/n" ; //获得上传文件的文件内容 $file = $_FILES [ 'upload_file' ][ 'tmp_name' ]; //确定上传文件的MIME类型 $mimeType = $_FILES [ 'upload_file' ][ 'type' ]; //获得上传文件的文件名 $fileName = $_FILES [ 'upload_file' ][ 'name' ]; //读取上传文件 $fp = fopen ( $file , "r" ); //打开文件 $read = fread ( $fp , filesize ( $file )); //读入文件 $read = base64_encode ( $read ); //base64编码 $read = chunk_split ( $read ); //切割字符串 //建立邮件的主体,分为邮件内容和附件内容两部分 $body = "-- $boundary Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 8bit $body -- $boundary Content-type: $mimeType ; name= $fileName Content-disposition: attachment; filename= $fileName Content-transfer-encoding: base64 $read -- $boundary --"; //发送邮件 并输出是否发送成功的信息 if (mail( $to , $subject , $body , $header )) { echo "信件发送成功" ; } else { echo "信件发送失败" ; } ?> |
希望本文所述对大家的php程序设计有所帮助。