WordPress wp_mail() 函数在使用语法时无法接收附件 $_FILES[ "upload_file" ][ "name" ]


//1st:   
move_uploaded_file($_FILES["upload_file"]["tmp_name"], WP_CONTENT_DIR.'/uploads/'.basename($_FILES['attachment']['name']));
$attachments = array(WP_CONTENT_DIR ."/uploads/".$_FILES["attachment"]["name"]);
//2nd
$attachment = array($_FILES['upload_file'][tmp_name]);
//wp_mail function:
if ( wp_mail( $to_email, $email_subject, $email_body, $header, $attachment) ) {
            _e("Message Sent Successfully!", 'framework');
        } else {
            _e("Server Error: WordPress mail method failed!", 'framework');
        }

我要发送的文件名为"xxx.pdf">

对于第一个代码,我可以将我的文件上传到我的服务器,与原始文件同名,但我收到的电子邮件不包含任何附件。

对于第二个代码,我收到附件,但没有任何指定的格式(例如 phpUOtAZU(。但是,当我添加文件扩展名(例如phpUOtAZU.pdf(时,它将具有与我要发送的文件相同的内容。

我如何收到以原始文件作为附件的电子邮件(例如 xxx.pdf(?如果需要更多代码信息,请告诉我。

我注意到在 #1 中您有$_FILES['upload_file']['tmp_name']但随后$_FILES['attachment']['name'] - 引用不同的文件输入("附件"而不是"upload_file"(。不可能是这样吧?

在定义 $attachments 时,您还错过了 basename(( 函数。那么这行得通吗?

$attachment = WP_CONTENT_DIR.'/uploads/'.basename($_FILES['upload_file']['name']));
move_uploaded_file($_FILES["upload_file"]["tmp_name"], $attachment);
if ( wp_mail( $to_email, $email_subject, $email_body, $header, array($attachment)) ) {
    _e("Message Sent Successfully!", 'framework');
} else {
    _e("Server Error: WordPress mail method failed!", 'framework');
}

这对我有用,我正在做几乎完全相同的事情。

如果您正在编写插件,我认为良好的 WordPress 礼仪是在/upload/中拥有自己的文件夹,您可以在插件激活时创建该文件夹并在停用时删除该文件夹。

相关内容

  • 没有找到相关文章

最新更新