2013-05-29 4 views
1

Я пытаюсь отправить некоторые файлы через контактную форму. Но у меня две проблемы.Вложение PHPMailer

Первый: файлы прибывают без форматирования, например: phpjL9y80.

Второй: Я не знаю, есть ли у PHPMailer функция или что-то в этом роде, чтобы отфильтровать расширения, потому что мне нужны только файлы .doc, .docx и .pdf.

Может кто-нибудь мне помочь, пожалуйста?

$mail->AddAttachment($_FILES['file']['tmp_name']); 
+0

Покажите нам код, используемый для отправки почты. –

ответ

1

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

move_uploaded_file($_FILES["file"]["tmp_name"],"/path/to/directory/". $_FILES["file"]["name"]); 

Чтобы отфильтровать его, возможно, PHPMailer не имеет к этому возможности. Но, вы можете использовать это:

$allowedExts = array("doc", "docx", "pdf"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 

if (in_array($extension, $allowedExts)) 
{ 
    $mail->AddAttachment("/path/to/directory/". $_FILES["file"]["name"]); 
} 

Чтобы удалить этот файл после отправки электронной почты только unlink его.

unlink("/path/to/directory/". $_FILES["file"]["name"]); 

Надеюсь, это поможет.

+0

Спасибо за помощь Луиджи, но одно. Файлы не могут оставаться на сервере (безопасные причины). Они должны быть приложены в форме и представлены. Можете ли вы помочь мне решить эту проблему, пожалуйста? –

+0

@ArthurMello, отсоединить (удалить) файл после отправки почты. 'unlink ("/path/to/directory/". $ _FILES [" file "] [" name "]);' –

+0

@ArthurMello, это сработало? –

Смежные вопросы