MailWatch icon indicating copy to clipboard operation
MailWatch copied to clipboard

Feature request: Ability to download mail as .EML+

Open gregecslo opened this issue 1 year ago • 1 comments

Hi. Sometimes we need .EML file for various reasons... So we copied it over sftp, webmin etc...

So I had enough and wrote simple EML downloader, it is not pretty but it does job well. Can it be included in next efa version?

How I did it:

Create file: /var/www/html/mailscanner/dl_mail.php

<?php

// Get the path from the URL parameter
$path = $_GET['path'];

if (file_exists($path)) {

    $basename = pathinfo($path, PATHINFO_FILENAME);

    $tempFile = tempnam(sys_get_temp_dir(), $basename);

    $emlFile = $tempFile . '.eml';
    rename($tempFile, $emlFile);

    copy($path, $emlFile);

    $filename = $basename . '.eml';
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Content-Length: ' . filesize($emlFile));

    readfile($emlFile);

    unlink($emlFile);

} else {
    // Handle the case where the file doesn't exist
    echo "File not found.";
}

Then in: /var/www/html/mailscanner/detail.php Added to the very end:

// Add footer
html_end();
// Declare paths for mail download
$first_path = $quarantined[0]['path'];
// Download it
echo '<td>' . '<a href="dl_mail.php?path=' . urlencode($first_path) . '" target="_blank">Download .EML</a>' . "</td>\n";
// Close any open db connections
dbclose();

And now I can download mail in EML format from detail page. It would be awesome if this would be a native feature... My solution is not pretty but it works :)

image

Thanks!

gregecslo avatar Sep 10 '24 06:09 gregecslo

Code is mostly complete but needs our security-related enhancements added for session and parameter validation and cross site scripting protection. I'll work on this as time permits.

ghost avatar Sep 11 '24 23:09 ghost