更改附件名称:wp_mail PHP

sc4hvdpw  于 2023-09-29  发布在  PHP
关注(0)|答案(4)|浏览(108)

我使用wp_mail发送邮件的形式是在我的网站上。但是当我附加一些文件时,名称就像“phpr0vAqT”或“phpFO0ZoT”。

$files = array(); //Array pour les fichiers
$count = count(array_filter($_FILES['fichier']['name'])); //Compte le nombre de fichiers

        for($i=0;$i<$count;$i++){ //boucle sur chaque fichier

            array_push($files, $_FILES['fichier']['tmp_name'][$i]); //insere le fichier dans l'array $files

         }

我认为这个问题来自于:['tmp_name'],但我不知道我可以改变什么,因为wp_mail需要一个路径。
然后,我这样做:

wp_mail($to, $subject, $message, $headers, $files);

发送邮件。
谢谢.

n53p2ov0

n53p2ov01#

要更改附件名称,您应该使用phpmailer_init action直接访问wp_mail()中使用的PHPMailer示例,而不是将$files作为函数参数传递:

function prefix_phpmailer_init(PHPMailer $phpmailer) {
    $count = count($_FILES['fichier']['tmp_name']); //Count the number of files
    for ($i = 0; $i < $count; $i++) { //loop on each file
        if (empty($_FILES['fichier']['error'][$i]))
            $phpmailer->addAttachment($_FILES['fichier']['tmp_name'][$i], $_FILES['fichier']['name'][$i]); //Pass both path and name
    }
}

add_action('phpmailer_init', 'prefix_phpmailer_init');
wp_mail($to, $subject, $message, $headers);
remove_action('phpmailer_init', 'prefix_phpmailer_init');
scyqe7ek

scyqe7ek2#

上面的方法是正确的,这里有一个在php / wp中如何做到这一点的例子。希望这对你有帮助!

if(!empty($_FILES['upload-attachment']['tmp_name'])){
            //rename the uploaded file
            $file_path = dirname($_FILES['upload-attachment']['tmp_name']);
            $new_file_uri = $file_path.'/'.$_FILES['upload-attachment']['name'];
            $moved = move_uploaded_file($_FILES['upload-attachment']['tmp_name'], $new_file_uri);
            $attachment_file = $moved ? $new_file_uri : $_FILES['upload-attachment']['tmp_name'];
            $attachments[] = $attachment_file;
 }

完成附件后,你应该清理

unlink($attachment_file);
iq0todco

iq0todco3#

不能使用wp_mail更改附件名称。
一种可能的解决方案是:
1.用正确的名称保存文件。
1.用wp_mail发送新文件。
1.删除文件。

mkshixfv

mkshixfv4#

自WP 6.2起,您可以将文件名设置为数组的键:

$attachments = [
    'filename1.txt'  => '/path/to/the/file1',
    'file_name2.pdf' => '/path/to/file2',
];

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

相关问题