2017-04-21 14 views
0

私はfucntions.phpファイルでフォームを作成して検証するショートコードを持っています。フォームが送信され、検証された後、データはSESSION変数に格納されます。 SESSION変数は、カスタムPHPテンプレートページに情報を運ぶために使用されます。このページは、wp_mail()を使用してフォームデータを電子メールで送信し、ありがとうございます。wp_mail() - 添付ファイルとしてフォームから 'file'入力タイプを送信する

私の問題は、フォームに画像アップロード用の「ファイル」入力タイプがあることです。私は正しく検証しましたが、アップロードされた画像を転送してwp_mail()関数の '$ attachments'としてメールで送信しています。

また、アップロードした画像をtempフォルダをSESSION変数に格納するのではなく、削除してからメールを送信してください。

私の質問はどのようなのですか?甘いバージョン:

のfunctions.php(ショート機能で)

<?php 
$file = ""; 
$fileErr = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    //file upload is required, make sure its not empty 
    if(empty($_FILES['pmFile'])){ 
     $fileErr = "This is required!"; 
    } 
    else{ 
     $file = $_FILES['pmFile'];//I validate here, but lets just say its OK  
    } 

    //If the error message is empty, store data in SESSION variables, and 
    //uploaded file in temp folder + redirect to thank you page 
    if(empty($fileErr)){ 

     //HOW DO I SAVE THE FILE TEMPORARILY FOR USE ON THE NEXT PAGE??? 

     wp_redirect('../wp-content/themes/rest of the path/thankYouPage.php'); 
     exit(); 

    }else{ /*display errors*/} 

} 

//down here is where I wrote the code for the form. YES method=post, YES I 
//included enctype="multipart/form-data, YES the file input name is in fact 
//'pmFile'. 
?> 

thankYouPage.php

//initial page stuff 
//start email setup 
$to = '[email protected]'; 

$email_from = '[email protected]'; 
$email_subject = "New Price Match Request"; 
$email_body = "I display the html and data here"; 

//for attachments 
//HOW DO I PULL THAT UPLOADED FILE FROM THE TEMP FOLDER AND SEND IT AS AN ATTACHMENT? 
$attachments = (the file in temp folder); 
//NOW HOW TO I DELETE IT FROM THE TEMP FOLDER 

$headers = "From: $email_from \r\n"; 
$headers .= "Reply-To: $email \r\n"; //$email is a SESSION variable pulled from before 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

//set to html 
add_filter('wp_mail_content_type',create_function('', 'return "text/html"; ')); 

//send 
wp_mail($to, $email_subject, $email_body, $headers, $attachments); 

// Reset content-type to avoid conflicts 
remove_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type'); 

私はそれが取り除かコードの多くを知っているが、電子メールは、セッション変数によって転送される形で他のすべての情報のために動作します。私は実際にこのアップロードされたファイルを転送して電子メールで送る方法を知る必要があります。ありがとう!

答えて

0

私が正しく理解している場合...

はその後$attachments = array(WP_CONTENT_DIR . '/uploads/file.txt');

するメールを送信し、unlinkを削除したメールにファイルを添付する。

+0

良い答え、短くて甘い。私は実際にこれを試す途中です、指が交差しました。 –

+0

あなたの答えは動作します!問題が発生するのはエラーです: "_Fileが空です。より大きなものをアップロードしてください。このエラーは、php.iniでアップロードが無効になっているか、post_max_sizeがupload_max_filesizeより小さいとphp.ini._ "私はphp.iniファイルを編集し、フォルダのアクセス権が正しいことを確認し、十分なハードディスク容量を確保しました。私はどこでも解決策を見つけることができません。 –

0

私はちょうどPHPMailerを使用していて、そのかなり簡単で、良い文書を持っています。添付ファイルを送ることも簡単です。使用move_uploaded_fileまたはwp_handle_uploadを一時フォルダからファイルをアップロードするための

+0

私はこれを理解しようとしているPHPMailerに何度も出くわしました。私はそれを試み、別の壁に当たったので、wp_mail()を試しました。私はもともとmail()LOLだけでこれをやっていました。私はとても近づいている時にこれをすべてやり直さなければならないのは嫌です。 –

関連する問題