#!/usr/bin/perl

use strict;
use Digest::SHA2;

my $file = $ARGV[0];
my $sha2obj = new Digest::SHA2 256;

open(MAIL_FILE, "$file");

my %info;

#printf "DATE,FROM,TO,SUBJECT,IMAP FOLDER,SHA256SUM\r\n";

while (<MAIL_FILE>) {

	chomp;
	s/,//g;
	s/"//g;

	if (/^Date:/) {

		s/Date: //;
		$info{'date'} = $_;

	} elsif (/^From:/) {

		s/From: //;
		$info{'from'} = $_;

	} elsif (/^Subject:/) {

		s/Subject: //;
		$info{'subject'} = $_;

	} elsif (/^To:/) {

		s/To: //;
		$info{'to'} = $_;

	} elsif (/^$/) {

		if (!defined($info{'date'})) { $info{'date'} = 'DATE UNKNOWN'; }
		if (!defined($info{'from'})) { $info{'from'} = 'FROM UNKNOWN'; }
		if (!defined($info{'to'})) { $info{'to'} = 'TO UNKNOWN'; }
		if (!defined($info{'subject'})) { $info{'subject'} = 'SUBJECT UNKNOWN'; }

		my $output = "$info{'date'},$info{'from'},$info{'to'},$info{'subject'},$file";
		$output =~ s/^\s*//;

		$sha2obj->add($output);
		my $sha256sum = $sha2obj->hexdigest();

		$output .= ",$sha256sum\r\n";

		if (!($output =~ /^DATE UNKNOWN,FROM UNKNOWN,TO UNKNOWN,SUBJECT UNKNOWN.*$/)) {

		printf $output;

		}
		undef(%info);

	}

}

close(MAIL_FILE);

