这篇文章主要介绍了php简单实现发送带附件的邮件,涉及附件上传及邮件发送的相关技巧,需要的朋友可以参考下
本文实例讲述了php简单实现发送带附件的邮件。分享给大家供大家参考。具体如下:
下面是静态html代码:
- <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文件代码:
- <?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程序设计有所帮助。
新闻热点
疑难解答