//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/中拥有自己的文件夹,您可以在插件激活时创建该文件夹并在停用时删除该文件夹。