本文实例讲述了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程序设计有所帮助。