2016-09-29 3 views
0

Verwenden von wp_mail(), um E-Mails und Anhänge zu behandeln. Ich bevorzuge es, wenn die hochgeladenen Anhänge vorübergehend gespeichert und die gelöschten nach dem Senden der E-Mails gelöscht werden. Derzeit werden die Uploads/Anhänge auf dem Server gespeichert. Wie kann man das verhindern?Wordpress wp_mail vorübergehend Anlagen speichern und löschen nach E-Mail gesendet

if(isset($_POST[ 'Save' ])) { 

function my_custom_email_content_type($content_type) { 
    return 'text/html'; 
} 

if (! function_exists('wp_handle_upload')) { 
    require_once(ABSPATH . 'wp-admin/includes/file.php'); 
} 

$files = $_FILES[ 'my_files' ]; 
$upload_overrides = array('test_form' => false); 

$attachments = array(); 

foreach ($files['name'] as $key => $value) { 
    if ($files[ 'name' ][ $key ]) { 
     $file = array(
      'name'  => $files[ 'name' ][ $key ], 
      'type'  => $files[ 'type' ][ $key ], 
      'tmp_name' => $files[ 'tmp_name' ][ $key ], 
      'error' => $files[ 'error' ][ $key ], 
      'size'  => $files[ 'size' ][ $key ] 
     ); 
     $movefile = wp_handle_upload(
      $file, 
      $upload_overrides 
     ); 
     $attachments[] = $movefile[ 'file' ]; 
    } 
} 

$to  = '[email protected]'; 
$subject = 'Contact Us'; 
$message = 'Haiii'; 
$headers[] = 'From: ' . get_option('blogname') . ' <[email protected]>'; 

add_filter(
    'wp_mail_content_type', 
    'my_custom_email_content_type' 
); 
$wp_mail_return = wp_mail(
    $to, 
    $subject, 
    $message, 
    $headers, 
    $attachments 
); 
if($wp_mail_return) { 
    echo 'Mail send'; 
} else { 
    echo 'Failed'; 
} 
remove_filter(
    'wp_mail_content_type', 
    'my_custom_email_content_type' 
); 
} 

Antwort

1

Kümmert es sich, ob es erfolgreich sendet oder nicht?

Wenn nicht, dann ist dies nur tun:

if($wp_mail_return) { 
    echo 'Mail send'; 
} else { 
    echo 'Failed'; 
} 

// Loops over the attachments (per your array), and removes the file 
foreach ((array)$attachments AS $file) { 
    unlink($file); 
} 

Wenn Sie nur das getan wollen, wenn es erfolgreich gesendet wird, nur um es zu bewegen in Ihrem wenn Bedingung:

if($wp_mail_return) { 
    echo 'Mail send'; 
    // Loops over the attachments (per your array), and removes the file 
    foreach ((array)$attachments AS $file) { 
     unlink($file); 
    } 
} else { 
    echo 'Failed'; 
} 
+0

nicht entkoppeln nicht nur delet der Dateiname? Vielleicht bin ich falsch. –

+0

Es tut. Ich glaube jedoch nicht, dass ein Post mit den Dateien verbunden ist, basierend auf der Dokumentation: https://codex.wordpress.org/Function_Reference/wp_handle_upload –

Verwandte Themen