使用wp_mail将附件发送到电子邮件

时间:2016-05-23 09:21:16

标签: php wordpress email-attachments contact-form

我正在使用wordpress 4.4.2。

文件类型的表格代码:

<input placeholder="'.__( 'Select File', 'mk_framework' ).'" type="file" name="file" id="file" class="contact_file file-form select-input full"/>

我使用以下代码上传文件并将附件发送到电子邮件。

if ( ! function_exists( 'wp_handle_upload' ) ) {
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
$uploadedfile = $_FILES['file'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile && ! isset( $movefile['error'] ) ) {
  echo "File is valid, and was successfully uploaded.\n";
  var_dump( $movefile );
  $attachments = $movefile[ 'file' ];
} else {
  echo $movefile['error'];
}

wp_mail($to, $subject, $body, $headers, $attachments);

我还在php.ini中增加了'upload_max_filesize和'post_max_size'变量的大小,但无法获得电子邮件的附件。

但它仍会给我一个错误:

  

文件为空。请上传更实质的内容。此错误也可能是由于php.ini中的上传被禁用或者post_max_size被定义为小于php.ini中的upload_max_filesize而引起的。

有没有办法做到这一点? 任何帮助/建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

迟到的答案;

您需要更改上传文件夹权限

chown -R www-data:www-data /var/www/html

您需要使用array进行附件。

if ( ! function_exists( 'wp_handle_upload' ) ) {
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
$uploadedfile = $_FILES['file'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile && ! isset( $movefile['error'] ) ) {
  echo "File is valid, and was successfully uploaded.\n";
  var_dump( $movefile );
  $attachments = array($movefile[ 'file' ]);
} else {
  echo $movefile['error'];
}

wp_mail($to, $subject, $body, $headers, $attachments);