What are some potential pitfalls to be aware of when working with email attachments in PHP?

One potential pitfall when working with email attachments in PHP is the risk of file upload vulnerabilities, where malicious files could be uploaded and executed on the server. To mitigate this risk, it is important to validate file types, limit file sizes, and store uploaded files in a secure location outside of the web root directory.

// Example of validating file type and size before uploading
$allowedTypes = array('pdf', 'doc', 'docx');
$maxFileSize = 5242880; // 5MB

if ($_FILES['attachment']['error'] === UPLOAD_ERR_OK) {
    $fileExtension = pathinfo($_FILES['attachment']['name'], PATHINFO_EXTENSION);
    $fileSize = $_FILES['attachment']['size'];

    if (!in_array($fileExtension, $allowedTypes)) {
        echo 'Invalid file type.';
    } elseif ($fileSize > $maxFileSize) {
        echo 'File is too large.';
    } else {
        // Move uploaded file to secure directory
        move_uploaded_file($_FILES['attachment']['tmp_name'], '/path/to/secure/directory/' . $_FILES['attachment']['name']);
    }
}