PHP:以上传的图片作为附件发送文本邮件



我真的需要以下脚本的帮助。我有一个上传表格,我希望上传的文件作为电子邮件附件发送。我在网上找到了一个片段,但当我发送邮件时,我的常规文本会被发送,附件会作为神秘字符粘贴到电子邮件中。

if ( isset($_POST['submit']) ):
        /* GET File Variables */ 
        $tmpName = $_FILES['attachment']['tmp_name']; 
        $fileType = $_FILES['attachment']['type']; 
        $fileName = $_FILES['attachment']['name']; 
        if ( file($tmpName) ) { 
          /* Reading file ('rb' = read binary)  */
          $file = fopen($tmpName,'rb'); 
          $data = fread($file,filesize($tmpName)); 
          fclose($file); 
          /* a boundary string */
          $randomVal = md5(time()); 
          $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 
          /* Header for File Attachment */
          $headers .= "nMIME-Version: 1.0n"; 
          $headers .= "Content-Type: multipart/mixed;n" ;
          $headers .= " boundary="{$mimeBoundary}""; 
          /* Multipart Boundary above message */
          $message = "This is a multi-part message in MIME format.nn" . 
          "--{$mimeBoundary}n" . 
          "Content-Type: text/plain; charset="iso-8859-1"n" . 
          "Content-Transfer-Encoding: 7bitnn" . 
          $message . "nn"; 
          /* Encoding file data */
          $data = chunk_split(base64_encode($data)); 
          /* Adding attchment-file to message*/
          $message .= "--{$mimeBoundary}n" . 
          "Content-Type: {$fileType};n" . 
          " name="{$fileName}"n" . 
          "Content-Transfer-Encoding: base64nn" . 
          $data . "nn" . 
          "--{$mimeBoundary}--n"; 
        } 
        $headers = "From: error@interreg.dev" . "rn";
        $headers .= "Content-Type: text/plain; charset=UTF-8rn";
        $headers .= "Reply-To: " . $mail . " rn";
        $subject = "Errormessage: " . $error;
        $message .= "this is some text that get's sent properly!";
        // Send Error
        $success = mail( $mail, $subject, $message, $headers ); ?>

知道我在这里做错了什么吗?我很想得到一些帮助。

提前谢谢。

Please try this code  
<?php
  function send_mail_attachment($filename, $path, $mailto, $from_mail,    $from_name,$replyto, $subject, $message) 
{
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">rn";
$header .= "Reply-To: ".$replyto."rn";
$header .= "MIME-Version: 1.0rn";
$header .= "Content-Type: multipart/mixed; boundary="".$uid.""rnrn";
$header .= "This is a multi-part message in MIME format.rn";
$header .= "--".$uid."rn";
$header .= "Content-type:text/plain; charset=iso-8859-1rn";
$header .= "Content-Transfer-Encoding: 7bitrnrn";
$header .= $message."rnrn";
$header .= "--".$uid."rn";
$header .= "Content-Type: application/octet-stream; name="".$filename.""rn"; // use different content types here
$header .= "Content-Transfer-Encoding: base64rn";
$header .= "Content-Disposition: attachment; filename="".$filename.""rnrn";
$header .= $content."rnrn";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
    echo "mail send ... OK"; // or use booleans here
} else {
    echo "mail send ... ERROR!";
}
}
$my_file = "mysomefile.zip";
$my_path = $_SERVER['DOCUMENT_ROOT']."/your_path_here/";
$my_name = "myscript";
$my_mail = "my@gmail.com";
$my_replyto = "myto@mail.net";
$my_subject = "This is a mail with attachment.";
$my_message = "Hello are you like this script? I hope it will help";
$mailto="hello@gmail.com";
mail_attachment($my_file, $my_path,$mailto, $my_mail, $my_name, $my_replyto, $my_subject, $my_message);
?> 
please try this code
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Email Attachment Without Upload - Excellent Web World</title>
<style>
body{ font-family:Arial, Helvetica, sans-serif; font-size:13px;}
th{ background:#999999; text-align:right; vertical-align:top;}
input{ width:181px;}
</style>
</head>
<body>
<form action="emailSend.php" method="post" name="mainform" enctype="multipart/form-         data">
<table width="500" border="0" cellpadding="5" cellspacing="5">
   <tr>
    <th>Your Name</th>
    <td><input name="fieldFormName" type="text"></td>
</tr>
<tr>
<tr>
    <th>Your Email</th>
    <td><input name="fieldFormEmail" type="text"></td>
</tr>
<tr>
    <th>To Email</th>
    <td><input name="toEmail" type="text"></td>
</tr>
<tr>
    <th>Subject</th>
    <td><input name="fieldSubject" type="text" id="fieldSubject"></td>
</tr>
<tr>
    <th>Comments</th>
    <td><textarea name="fieldDescription" cols="20" rows="4" id="fieldDescription"></textarea></td>
</tr>
<tr>
  <th>Attach Your File</th>
  <td><input name="attachment" type="file"></td>
</tr>
<tr>
    <td colspan="2" style="text-align:center;"><input type="submit" name="Submit" value="Send"><input type="reset" name="Reset" value="Reset"></td>
</tr>
</table>
</form>

以下是在电子邮件附件中发送该文件的PHP代码

<?php
$to = $_POST['toEmail'];
$fromEmail = $_POST['fieldFormEmail']; 
$fromName = $_POST['fieldFormName']; 
$subject = $_POST['fieldSubject']; 
$message = $_POST['fieldDescription'];
/* GET File Variables */ 
$tmpName = $_FILES['attachment']['tmp_name']; 
$fileType = $_FILES['attachment']['type']; 
$fileName = $_FILES['attachment']['name']; 
/* Start of headers */ 
$headers = "From: $fromName"; 
if (file($tmpName)) { 
/* Reading file ('rb' = read binary)  */
$file = fopen($tmpName,'rb'); 
$data = fread($file,filesize($tmpName)); 
fclose($file); 
 /* a boundary string */
 $randomVal = md5(time()); 
 $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 
 /* Header for File Attachment */
 $headers .= "nMIME-Version: 1.0n"; 
 $headers .= "Content-Type: multipart/mixed;n" ;
 $headers .= " boundary="{$mimeBoundary}""; 
 /* Multipart Boundary above message */
 $message = "This is a multi-part message in MIME format.nn" . 
 "--{$mimeBoundary}n" . 
 "Content-Type: text/plain; charset="iso-8859-1"n" . 
 "Content-Transfer-Encoding: 7bitnn" . 
 $message . "nn"; 
 /* Encoding file data */
 $data = chunk_split(base64_encode($data)); 
 /* Adding attchment-file to message*/
 $message .= "--{$mimeBoundary}n" . 
 "Content-Type: {$fileType};n" . 
 " name="{$fileName}"n" . 
 "Content-Transfer-Encoding: base64nn" . 
 $data . "nn" . 
 "--{$mimeBoundary}--n"; 
 } 
 $flgchk = mail ("$to", "$subject", "$message", "$headers"); 
 if($flgchk){
 echo "A email has been sent to: $to";
 }
 else
 {
 echo "Error in Email sending";
 }
 ?>

相关内容

  • 没有找到相关文章

最新更新