来自表单的WP邮件附件没有上传文件在filemanager

时间:2016-02-11 15:47:49

标签: php wordpress email

从表单通过wp_mail函数我正在尝试发送带附件的电子邮件,而不将文件上传到文件管理器。 我收到附件的电子邮件。但附件名称不正确,没有文件类型。请帮忙解决这个问题。

这是HTML表单

<form action="POST" enctype="multipart/form-data">
    <table>
        <input type="file" name="Attached">
        <input type="Submit" name="Submit">
    </table>
</form>

有我的PHP代码

if (isset($_POST['Submit'])) {
    $attachments = $_FILES['Attached']['tmp_name'];

    $recipients = "john@mail.com";
    $SenderName = get_bloginfo('name');
    $SenderEmail = "noreply@domain.com";
    $body   = "How are you what are you doing now. bla bla bla";

    $recipients = array($to);
    $headers[] = "From: $SenderName <$SenderEmail>" . "\r\n";
    $headers[] = "Content-Type: text/html";
    $subj = "This is mail subject";
    $SendMail   = wp_mail( $recipients, $subj, $body, $headers, $attachments );
}

1 个答案:

答案 0 :(得分:0)

我必须为这个

提出解决方法

我做的是

  1. 将文件上传到服务器
  2. 使用wp-mail发送电子邮件
  3. 是否成功发送电子邮件;取消链接上传的图片
  4. 1.将文件上传到服务器

        /*image upload */
    /* GET File Variables */
    $target_dir = $_SERVER['DOCUMENT_ROOT']. "/uploads/";
    $image_name = $_FILES['YOUR_IMAGE']['name'];
    $target_file = $target_dir . basename($_FILES['YOUR_IMAGE']['name']);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    // Check if image file is a actual image or fake image
    
    $check = getimagesize($_FILES["YOUR_IMAGE"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
    
    
    // Check file size
    if ($_FILES["YOUR_IMAGE"]["size"] > 500000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
        && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
        // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["YOUR_IMAGE"]["tmp_name"], $target_file)) {
            echo "The file ". basename( $_FILES["YOUR_IMAGE"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
    
    $attachment = array($target_file);
    

    2.email with wp-mail

        $to = $Email; // put your email here
            $headers = array('Content-Type: text/html; charset=UTF-8','From:' . $name . '<' . $fromEmail . '>');
    
            // $headers = 'From:' . $name . '<' . $studentEmail . '>' . "\r\n"; // put user's email here or duplicate your email
            $subject = 'Apply Online Form';
    
            if (wp_mail($to, $subject, $message, $headers, $attachment ) === false) {
                echo "Error";
                 unlink($target_file);
            } else {
                 unlink($target_file);
                echo "<h3> Mail Sent Successfully</h3>";
            }
    

    3.成功发送电子邮件或不取消链接上传的图片

    unlink($target_file);