您在OP中说返回了绝对路径,但您使用的是“baseurl”值,该值为您提供了可浏览到的文件的URL。这是一个URL,与文件系统中文件的路径不同。
这一行是您的问题:
$attachment = $upload_dir[\'baseurl\'] . "/order-confirm/wardrobe-
".$build_id.".pdf";
这将为您提供如下URL:
http://yoursite.com/directory/order-confirm/wardrobe-something.pdf
You can\'t attach a file to an email from a URL. 您需要服务器上文件的文件路径,以便可以附加它。使用
basedir
值来生成文件路径。
$attachment = $upload_dir[\'basedir\'] . "/order-confirm/wardrobe-
".$build_id.".pdf";
The
basedir
结果将为您提供如下信息:
/yourserver/somepath/directory/order-confirm/wardrobe-something.pdf
通过文件的路径,您可以将其附加到电子邮件中。
这是您修改后要使用的函数basedir
而不是baseurl
(在我更改的地方加了一条注释):
add_action(\'wp_ajax_order_processing\', \'order_processing\');
function order_processing(){
include \'mail-translations.php\';
require_once( ABSPATH . \'wp-admin/includes/file.php\' );
global $wp_filesystem;
$upload_dir = wp_upload_dir();
$dir = trailingslashit( $upload_dir[\'basedir\'] ) . \'order-confirm/\';
WP_Filesystem();
$wp_filesystem->mkdir( $dir );
$build_id=md5(uniqid(cvf_td_generate_random_code(), true));
$message = "<p>Hello</p>";
$mpdf = new mPDF(\'utf-8\', \'A4-P\');
$mpdf->debug = true;
$mpdf->dpi = 150;
$mpdf->img_dpi = 150;
$mpdf->setAutoTopMargin = \'stretch\';
$mpdf->setAutoBottomMargin = \'stretch\';
$src = get_template_directory_uri() . \'/images/rsz_bomann-logo-black.png\';
$mpdf->SetWatermarkImage($src);
$mpdf->showWatermarkImage=true;
$mpdf->SetHTMLHeader(\'\');
// PDF footer content
$mpdf->SetHTMLFooter(\'\');
$mpdf->SetFont(\'helvetica\');
$mpdf->WriteHTML($message); // Writing html to pdf
// FOR EMAIL
$content = $mpdf->Output( $dir . "wardrobe-".$build_id.".pdf", \'F\');
$content = chunk_split(base64_encode($content));
// Use \'basedir\' instead of \'baseurl\':
$attachment = $upload_dir[\'basedir\'] . "/order-confirm/wardrobe-
".$build_id.".pdf";
// Set Mail Headers
$headers = "MIME-Version: 1.0" . "\\r\\n";
$headers .= "Content-type: text/html; charset=" . get_bloginfo(\'charset\') .
"" . "\\r\\n";
$subject = __(\'Order Confirmation for Order No. \', \'skapnet\');
$order_mail = wp_mail("[email protected]", $subject, \'message\' ,
$headers, array($attachment));
echo $order_mail;
}