【问题标题】:How to upload file to custom folder and send attachment to email in wordpress如何将文件上传到自定义文件夹并将附件发送到 wordpress 中的电子邮件
【发布时间】:2013-09-19 16:54:04
【问题描述】:

我在上传和发送附件时遇到了一些问题。 例如:

$zip_code = $_POST['zip_code'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$attachments = '';
if (!empty($_FILES['attachment']['tmp_name'])) {
    $path = $_FILES['attachment']['name'];
    if (copy($_FILES['attachment']['tmp_name'], $path)) $attachments = $path;
}

$subject = 'You have message from ' . get_bloginfo('name');
$message = '<table width="100%" cellspacing="0" cellpadding="5" border="0">';
$message .= '<tr><td width="150px"><b>Zip Code:</b></td><td>' . $zip_code . '</td></tr>';
$message .= '<tr><td width="150px"><b>Phone:</b></td><td>' . $phone . '</td></tr>';
$message .= '<tr><td width="150px"><b>Email:</b></td><td>' . $email . '</td></tr>';
$message .= '<tr><td width="150px"><b>Attachments:</b></td><td>' . $attachments . '</td></tr>';
$message .= '</table>';
//php mailer variables
$to = get_option('admin_email');
$headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Content-Disposition: attachment; filename = \"" . $attachments . "\"\n\n";
$sent = wp_mail($to, $subject, $message, $headers, $attachments);

此代码无法正常工作。电子邮件和附件发送正确,但文件上传到根目录。当我上传相同的文件时,新文件会覆盖旧文件。我不明白如何在文件名中添加一些哈希标记。

也许你可以帮助我?任何想法或我可以在哪里阅读如何解决此问题。

谢谢!

【问题讨论】:

    标签: wordpress email file-upload attachment


    【解决方案1】:

    什么不工作?为了帮助您找出不正常的地方,试试这个:

    $zip_code = $_POST['zip_code'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $attachments = '';
    if (!empty($_FILES['attachment']['tmp_name'])) {
        $path = $_FILES['attachment']['name'];
        if (copy($_FILES['attachment']['tmp_name'], $path)) $attachments = $path;
    }
    
    $subject = 'You have message from ' . get_bloginfo('name');
    $message = '<table width="100%" cellspacing="0" cellpadding="5" border="0">';
    $message .= '<tr><td width="150px"><b>Zip Code:</b></td><td>' . $zip_code . '</td></tr>';
    $message .= '<tr><td width="150px"><b>Phone:</b></td><td>' . $phone . '</td></tr>';
    $message .= '<tr><td width="150px"><b>Email:</b></td><td>' . $email . '</td></tr>';
    $message .= '<tr><td width="150px"><b>Attachments:</b></td><td>' . $attachments . '</td></tr>';
    $message .= '</table>';
    //php mailer variables
    $to = get_option('admin_email');
    $headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $headers .= "Content-Disposition: attachment; filename = \"" . $attachments . "\"\n\n";
    
    echo 'Headers:  . $headers . '<br>/r/n';
    echo 'To: ' . $to .'<br>/r/n';
    echo 'Subject: ' . $subject . '<br>/r/n';
    echo 'Message: ' . $message . '<br>/r/n';
    echo 'Image: <img src="' . $attachments .'" />';
    
    
    // $sent = wp_mail($to, $subject, $message, $headers, $attachments);
    

    如果有任何遗漏,您将能够看到遗漏的内容,并且您将能够通过这种方式纠正您的代码。

    【讨论】:

    • 嗯,邮件发送正常,但附件上传到根目录。我想在自定义文件夹中上传文件,例如 wp-content/upload/attachment/ 并添加一些哈希标签来上传文件,例如 name_001.doc, name_002.pdf
    • 要将文件上传到上传文件目录,请将$path = $_FILES['attachment']['name']; 行更改为$upload_dir = wp_upload_dir(); $path = $upload_dir['path'] . $_FILES['attachment']['name']; 要在文件名中包含哈希,您需要一个拆分扩展名的函数原始文件并检查目录以查看您当前处于哪个迭代,例如name_017.pdf,因此该函数需要添加一个,使新上传的文件名为name_018.pdf
    • 谢谢你!你真的帮助我。对于当前副本,我使用$upload_dir = wp_upload_dir(); $path = $upload_dir['path'] . '/' . $_FILES['attachment']['name'];,现在我尝试将哈希添加到文件名
    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 2011-03-13
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2023-03-16
    • 2016-11-16
    相关资源
    最近更新 更多