#!/usr/bin/perl

BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }

use MIME::Lite;
use Mail::Sendmail;
    
require cfg ;

print "Content-type: text/html\n\n";

&today ;

our $debug = 1 ;

#------------------------------------------------------------------------------------------

# https://itvadmin.co.za/cgi-bin/scripts/admin/oneoff/sendmailv3.pl

use CGI::Carp qw(fatalsToBrowser);

&common_v3_send_smtp_mail('','rory@kre8it.co.za','rory@mathew.za.net,admin@kre8it.co.za','k@re8it.com',"Calibration : $now_ccyy_mm_dd $now_hh_min_sec","Please see attached calibration...",'','html','',"$htmlpath/pdf/operator_flyer",'operator_email_attach.pdf','pdf',0,0) ;

exit ;

#------------------------------------------------------------------------------------------

sub common_v3_send_smtp_mail {
	
	my ($from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication,$uploaded_doc,$operator_email) = @_ ;
	
	# &common_debug("common_send_smtp_mail [$from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication,$uploaded_doc,$operator_email]") ;

	return unless $msg ;
	return unless $subj ;
	
	# my $htype = (-f "$attachpath/$attachname" || $uploaded_doc || $operator_email) ? 'htmlattach' : ($html eq 'html') ? $html : 'text' ;
	
	# my $res = &common_mailsend_sendgrid($htype,$to,$subj,$msg,$attachpath,$attachname,"$useropts{short} Events",'events@itvadmin.co.za',$cc,$bcc,$uploaded_doc,$operator_email);

	# return if $res eq 'success' ; # carry on if mailsend_sendgrid failed

	my $main_email = $email_add{'events'}  ;

	$to   = $main_email unless $to ;
	$from = $afrihost_from unless $from ;
	
	my $mail_body = ($html) ? &common_get_mail_body($msg,$table_msg,$thead) : $msg  ;

	if ($html) {
		if ($attachname && -f "$attachpath/$attachname") {
			&common_debug("common_send_smtp_mail attach : $attachpath/$attachname [$attachapplication]") ;
			&common_v3_email_with_attachments($from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication) ;
			return ;
		}
		if ($uploaded_doc) {
			my @parts = split(/\//,$uploaded_doc) ;
			$attachname = $parts[-1] ;
			pop @parts ;
			$attachpath = join("/",@parts) ;
			&common_v3_email_with_attachments($from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,$attachpath,$attachname,'') ;
			return ;
		}
		if ($operator_email) {
			&common_v3_email_with_attachments($from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,"$htmlpath/pdf/operator_flyer/operator_email_attach.pdf",'operator_email_attach.pdf','pdf') ;
			return ;
		}
		# &common_send_mail($to,$cc,$bcc,$html,$thead,$msg,$subj,$table_msg) ;	
	} else {
		# &common_send_mail($to,$cc,$bcc,$html,$thead,$msg,$subj,$table_msg) ;
	}
	
} #------------------------------------------------------------------------------------------

sub common_v3_email_with_attachments {
    my ($from, $to, $cc, $bcc, $subj, $text_msg, $table_msg, $html, $thead, $attachpath, $attachname, $attachapplication) = @_;

    use MIME::Lite;
    use Net::SMTP::SSL;

    # === Gmail SMTP configuration ===
    my $smtp_host = $gmail_smtp;   # e.g. "smtp.gmail.com"
    my $smtp_port = 465;
    my $smtp_user = $gmail_from;
    my $smtp_pass = $gmail_psw;

    # HTML body
    my $mail_body = common_get_mail_body($text_msg, $table_msg);

    # Attachment
    my $fullattachpath = "$attachpath/$attachname";
    die "Attachment file not found: $fullattachpath\n" unless -e $fullattachpath;

    # === Create top-level message ===
    my $msg = MIME::Lite->new(
        From    => "$useropts{short} Events <$from>",
        'Reply-To' => $email_reply_to,
        To      => $to,
        Cc      => $cc || '',
        Bcc     => $bcc || '',
        Subject => $subj,
        Type    => 'multipart/mixed',
    );

    # Add HTML part
    $msg->attach(
        Type => 'text/html',
        Data => $mail_body
    );

    # Add attachment
    my $attachtype = ($attachapplication) ? "application/$attachapplication" : 'AUTO';
    $msg->attach(
        Type        => $attachtype,
        Path        => $fullattachpath,
        Filename    => $attachname,
        Disposition => 'attachment',
        Encoding    => 'base64',
    );

    # === Send via Gmail ===
    my $smtp = Net::SMTP::SSL->new($smtp_host, Port => $smtp_port, Timeout => 20)
        or die "Cannot connect to $smtp_host: $!";

    $smtp->auth($smtp_user, $smtp_pass)
        or die "SMTP auth failed: " . $smtp->message();

    $smtp->mail($from)
        or die "MAIL FROM failed: " . $smtp->message();

    for my $recipient (split /\s*,\s*/, join(',', grep { $_ } ($to, $cc, $bcc))) {
        $smtp->to($recipient)
            or die "RCPT TO <$recipient> failed: " . $smtp->message();
    }

    $smtp->data();
    $smtp->datasend($msg->as_string);
    $smtp->dataend();
    $smtp->quit;
	
} #----------------------------------------------------------------------------------------

use today ;
use common ;

1;