phpMailer отправляет имя вложения, а не вложение - PullRequest
2 голосов
/ 14 июля 2011

Привет, у меня есть поле для загрузки файла с именем = "file1" и кодом в скрипте phpmailer:

if (isset($_FILES['file1']))
{
$file1_path = $_FILES['file1']['tmp_name'];
$file1_name = $_FILES['file1']['name'];
$file1_type = $_FILES['file1']['type'];
$file1_error = $_FILES['file1']['error'];
$mail->AddAttachment($file1_path);
}

И по какой-то причине он прикреплен как php45we34 (каждый раз, когда diff, кажется, что это путь к временному имени, а не сам файл)

Любая помощь?

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Уберите пробелы из вашего имени файла!

Blue hills.jpg должно быть Blue_hills.jpg

до

$fileName = str_replace(' ', '_', $fileName);

1 голос
/ 06 ноября 2012

То, что вы видите, это то, что должно произойти. Вы не указываете имя вложения , поэтому phpMailer использует имя временного файла, который он прикрепляет.

Если вы хотите, чтобы файл имел другое имя, вы должны указать его.Принятый ответ работает, потому что он идет наоборот - он меняет имя файла так, чтобы у файла было желаемое имя.

Обычный способ продолжить это выдать

$mail->AddAttachment($file1_path, $_FILES['file1']['name']);

переопределить имя вложения.

1 голос
/ 15 июля 2011

Я предлагаю вам использовать функцию move_uploaded_file перед добавлением вложения.

Это пример кода, который переместит файл из временного места на ваш сервер

$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

После этого AddAttachment должен работать нормально.

$mail->AddAttachment(basename($target_path . $_FILES['uploadedfile']['name']));
...