#!/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/sendmailv2.pl use CGI::Carp qw(fatalsToBrowser); # $email_add{'reply-to'} = 'events@aisport.africa' ; # &mailsend_sendgrid('text','rory@kre8it.co.za','TEST - Tue 30-Apr-2024','testing 123','/var/www/html/pdf/event_details','Event_Details-5136.pdf','Telemedia Events','website@bookingtelemedia.co.za','','','',0) ; &common_v2_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) ; # &common_v2_send_smtp_mail('','rory@kre8it.co.za','rory@mathew.za.net','',"Calibration : $now_ccyy_mm_dd $now_hh_min_sec","Please see attached calibration...",'','','','','','',0,0) ; # &common_v2_send_smtp_mail('','rory@kre8it.co.za','rory@mathew.za.net','',"Calibration : $now_ccyy_mm_dd $now_hh_min_sec","Please see attached calibration...",'','','','','','',0,0) ; # &common_send_mail('rory@kre8it.co.za','rory@mathew.za.net','k@re8it.com','html','',"Please see attached calibration...","Calibration : $now_ccyy_mm_dd $now_hh_min_sec") ; # &common_send_mail('rory@kre8it.co.za','rory@mathew.za.net','k@re8it.com','','',"Please see attached calibration...","Calibration : $now_ccyy_mm_dd $now_hh_min_sec") ; # &common_send_mail('rory@kre8it.co.za','rory@mathew.za.net,k@re8it.com','','','',"Please see attached calibration...","Calibration : $now_ccyy_mm_dd $now_hh_min_sec") ; exit ; #------------------------------------------------------------------------------------------ sub common_v2_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_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_email_with_attachments($from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,$attachpath,$attachname,'') ; return ; } if ($operator_email) { &common_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_email_with_attachments { my ($from,$to,$cc,$bcc,$subj,$text_msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication) = @_ ; use MIME::Lite; use Net::SMTP_auth; # SMTP configuration my $smtp_host = $afrihost_smtp ; my $smtp_port = $afrihost_port ; my $smtp_user = $afrihost_from ; my $smtp_pass = $afrihost_psw ; my $from = $afrihost_from ; # HTML body part my $mail_body = &common_get_mail_body($text_msg,$table_msg) ; my $fullattachpath = "$attachpath/$attachname"; die "Attachment file not found: $fullattachpath" unless -e $fullattachpath; # === build the MulitPart MIME Message === # Create the 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', ); # Create the HTML part my $html_part = MIME::Lite::->new( 'Type' => 'multipart/related', ); $html_part->attach( 'Type' => 'text/html', 'Data' => $mail_body, ) ; # === Attachments === my $attachtype = ($attachapplication) ? "application/$attachapplication" : 'AUTO' ; my $attach_part = MIME::Lite::->new( 'Type' => 'multipart/mixed', ); $attach_part->attach ( Type => "$attachtype", Encoding => 'base64', Path => "$fullattachpath", Filename => $attachname, Disposition => 'attachement' ) ; $msg->attach($attach_part); $msg->attach($html_part); my $email = $msg->as_string(); my $smtp_msg = Net::SMTP_auth->new($smtp_host, Port=>587) or die "Can't connect"; $smtp_msg->auth('PLAIN', $smtp_user, $smtp_pass) or die "Can't authenticate:" . $smtp_msg->message(); $smtp_msg->mail($from) or die "Error:" . $smtp_msg->message(); $smtp_msg->to($_) for split(/\s*,\s*/, join(',', $to, $cc, $bcc)); # $smtp_msg->recipient($to) or die "Error:".$smtp_msg->message(); $smtp_msg->data() or die "Error:".$smtp_msg->message(); $smtp_msg->datasend($email) or die "Error:".$smtp_msg->message(); $smtp_msg->dataend() or die "Error:".$smtp_msg->message(); $smtp_msg->quit or die "Error:".$smtp_msg->message(); } #---------------------------------------------------------------------------------------- # sub common_email_with_attachments { # my ($from,$to,$cc,$bcc,$subj,$text_msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication) = @_ ; # use MIME::Lite; # use Net::SMTPS; # # SMTP configuration # my $smtp_host = $afrihost_smtp ; # my $smtp_port = $afrihost_port ; # my $smtp_user = $afrihost_from ; # my $smtp_pass = $afrihost_psw ; # my $from = $afrihost_from ; # # HTML body part # my $mail_body = &common_get_mail_body($text_msg,$table_msg) ; # my $fullattachpath = "$attachpath/$attachname"; # die "Attachment file not found: $fullattachpath" unless -e $fullattachpath; # # ################################################################# # # Lets build the MulitPart MIME Message # # ################################################################# # # Create the 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', # ); # # Create the HTML part # my $html_part = MIME::Lite::->new( # 'Type' => 'multipart/related', # ); # $html_part->attach( # 'Type' => 'text/html', # 'Data' => $mail_body, # ) ; # # === Attachments === # my $attachtype = ($attachapplication) ? "application/$attachapplication" : 'AUTO' ; # my $attach_part = MIME::Lite::->new( # 'Type' => 'multipart/mixed', # ); # $attach_part->attach ( # Type => "$attachtype", # Encoding => 'base64', # Path => "$fullattachpath", # Filename => $attachname, # Disposition => 'attachement' # ) or &common_send_mail('rory@kre8it.co.za','','','',"$useropts{short} ERROR : common.pm","common_send_smtp_mail cant attach $attachpath/$attachname : $!") ; # $msg->attach($attach_part); # $msg->attach($html_part); # my $email = $msg->as_string(); # # # === Send via SMTPS (port 465) === # my $smtp = Net::SMTPS->new( # $smtp_host, # Port => 587, # doSSL => 'starttls', # Timeout => 30, # Debug => 1, # ) or die "Failed to connect to SMTP server"; # $smtp->auth($smtp_user, $smtp_pass) or die "SMTP Auth failed: $!"; # # Send the email # $smtp->mail($from) or die "MAIL FROM failed"; # # $smtp->to($_) for split(/\s*,\s*/, join(',', $to, $cc, $bcc)); # $smtp->to($to) or die "Error:".$smtp->message(); # # $smtp->recipient($to) or die "Error:".$smtp->message(); # # &common_debug("common_send_smtp_mail attach : $attachpath/$attachname [$attachapplication]") ; # # # Send the message # # $smtp->data(); # # $smtp->datasend($msg->as_string); # # my $response = $smtp->dataend(); # # $smtp->quit; # eval { # $smtp->data() or die "Error:" . $smtp->message(); # $smtp->datasend($email) or die "Error:" . $smtp->message(); # $smtp->dataend() or die "Error:" . $smtp->message(); # $smtp->quit; # }; # if ($@ || $!) { # print "Email sending failed: $@ $!\n"; # } else { # print "Email sent successfully.\n"; # } # # my $smtp_msg = Net::SMTP_auth->new($smtp_host, Port=>587) or die "Can't connect"; # # $smtp_msg->auth('PLAIN', $smtp_user, $smtp_pass) or die "Can't authenticate:" . $smtp_msg->message(); # # $smtp_msg->mail($from) or die "Error:".$smtp_msg->message(); # # # $smtp->to($_) for split(/\s*,\s*/, join(',', $to, $cc, $bcc)); # # $smtp_msg->recipient($to) or die "Error:".$smtp_msg->message(); # # $smtp_msg->data() or die "Error:".$smtp_msg->message(); # # $smtp_msg->datasend($email) or die "Error:".$smtp_msg->message(); # # $smtp_msg->dataend() or die "Error:".$smtp_msg->message(); # # $smtp_msg->quit or die "Error:".$smtp_msg->message(); # } #---------------------------------------------------------------------------------------- # sub common_email_with_attachments { # my ($from,$to,$cc,$bcc,$subj,$text_msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication) = @_ ; # use MIME::Lite; # use Net::SMTPS; # # SMTP configuration # my $smtp_host = $afrihost_smtp ; # my $smtp_port = $afrihost_port ; # my $smtp_user = $afrihost_from ; # my $smtp_pass = $afrihost_psw ; # my $from = $afrihost_from ; # # HTML body part # my $html_body = &common_get_mail_body($text_msg,$table_msg) ; # my $fullpath = "$attachpath/$attachname"; # die "Attachment file not found: $fullpath" unless -e $fullpath; # # Create MIME::Lite message # my $msg = MIME::Lite->new( # From => $from, # To => $to, # Cc => $cc, # Bcc => $bcc, # Subject => $subj, # Type => 'multipart/mixed', # ); # $msg->attach( # Type => 'text/html', # Data => $html_body, # ); # # === Attachments === # my $attachtype = ($attachapplication) ? "application/$attachapplication" : 'application/octet-stream' ; # application/pdf or application/vnd.openxmlformats-officedocument.spreadsheetml.sheet # $msg->attach( # Type => "$attachtype", # # Encoding => 'base64', # Path => "$fullpath", # Filename => "$attachname", # Disposition => 'attachment', # ); # # # JPG # # $msg->attach( # # Type => 'image/jpeg', # # Path => 'photo.jpg', # # Filename => 'photo.jpg', # # Disposition => 'attachment', # # ); # # === Send via SMTPS (port 465) === # my $smtp = Net::SMTPS->new( # $smtp_host, # Port => $smtp_port, # doSSL => 'ssl', # Timeout => 30, # Debug => 1, # ) or die "Failed to connect to SMTP server"; # $smtp->auth($smtp_user, $smtp_pass) or die "SMTP Auth failed: $!"; # # Send the email # $smtp->mail($from) or die "MAIL FROM failed"; # $smtp->to($_) for split(/\s*,\s*/, join(',', $to, $cc, $bcc)); # # &common_debug("common_send_smtp_mail attach : $attachpath/$attachname [$attachapplication]") ; # # # Send the message # # $smtp->data(); # # $smtp->datasend($msg->as_string); # # my $response = $smtp->dataend(); # # $smtp->quit; # eval { # $smtp->data() or die "DATA command failed : $@ $!"; # $smtp->datasend($msg->as_string) or die "DATASEND failed : $@ $!"; # $smtp->dataend() or die "DATAEND failed : $@ $!"; # $smtp->quit; # }; # if ($@ || $!) { # print "Email sending failed: $@ $!\n"; # } else { # print "Email sent successfully.\n"; # } # } #---------------------------------------------------------------------------------------- # sub common_v2_send_smtp_mail { # my ($from,$to,$cc,$bcc,$subj,$msg,$table_msg,$html,$thead,$attachpath,$attachname,$attachapplication,$uploaded_doc,$operator_email) = @_ ; # use Net::SMTPS; # # SMTP configuration # my $smtp_host = $afrihost_smtp ; # my $smtp_port = $afrihost_port ; # my $smtp_user = $afrihost_from ; # my $smtp_pass = $afrihost_psw ; # $from = $afrihost_from unless $from ; # # Create SMTPS object # my $smtp = Net::SMTPS->new( # $smtp_host, # Port => $smtp_port, # doSSL => 'ssl', # Ensure SSL from start (port 465) # Timeout => 30, # Debug => 1, # Optional: for debug output # ); # # Authenticate # $smtp->auth($smtp_user, $smtp_pass) or die "SMTP Auth failed: $!"; # # Send the email # $smtp->mail($from); # $smtp->to($to); # my $body = ($html) ? &common_get_mail_body($msg,$table_msg) : $msg ; # $smtp->data(); # $smtp->datasend("From: $from\n"); # $smtp->datasend("To: $to\n"); # $smtp->datasend("Subject: $subj\n"); # $smtp->datasend("MIME-Version: 1.0\n") if $html ; # $smtp->datasend("Content-Type: text/html; charset=UTF-8\n") if $html ; # $smtp->datasend("\n"); # empty line between headers and body # $smtp->datasend("$body\n"); # $smtp->dataend(); # $smtp->quit; # # print "Email sent successfully.\n"; # } #---------------------------------------------------------------------------------------- # sub common_get_mail_body { # my ($email_msg,$table_msg) = @_ ; # my $mail_body = < # # # # # # # #
# $useropts{short} #

# $email_msg #

# # $thead # # $table_msg # #
#
#

$display_notif_msg # Best regards, #
#
# The $useropts{short} Team. #

#
# # # END_OF_BODY # return ($mail_body) ; # } #---------------------------------------------------------------------------------------- use today ; use common ; # use mailsend ; 1;