#!/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;