mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-22 19:56:29 +01:00
MailTransport refactoring
This commit is contained in:
parent
7a54a35b00
commit
9082b161de
5 changed files with 44 additions and 239 deletions
|
@ -283,7 +283,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
|
||||||
#keep in mind, it works on operator dependency
|
#keep in mind, it works on operator dependency
|
||||||
$bw->log("user_miniquery via $varenv{dbname} exist count:",$authraw->{int23},"");
|
$bw->log("user_miniquery via $varenv{dbname} exist count:",$authraw->{int23},"");
|
||||||
#Nur für project=Bayern und für Entwickler aktiviert
|
#Nur für project=Bayern und für Entwickler aktiviert
|
||||||
if($booking_values->{state} eq "available" && (($dbt->{operator}->{$varenv{dbname}}->{project} eq "Bayern" && $authraw->{int23} >= 1 && $authraw->{int23} < 4) || ($authraw->{c_id} == 1842 || $authraw->{c_id} == 5781 || $authraw->{c_id} == 11765 || $authraw->{c_id} == 1843))){
|
if($booking_values->{state} eq "available" && $dbt->{operator}->{$varenv{dbname}}->{project} eq "Bayern" && (($authraw->{int23} >= 1 && $authraw->{int23} < 4) || ($authraw->{c_id} == 1842 || $authraw->{c_id} == 5781 || $authraw->{c_id} == 11765 || $authraw->{c_id} == 1843))){
|
||||||
|
|
||||||
#TODO $ user_miniquery have to be in db table on primary
|
#TODO $ user_miniquery have to be in db table on primary
|
||||||
$bw->log("user_miniquery communicated to user ID",$authraw->{c_id},"");
|
$bw->log("user_miniquery communicated to user ID",$authraw->{c_id},"");
|
||||||
|
|
|
@ -203,7 +203,7 @@ sub handler {
|
||||||
#we need this to get $R::sessionid to FormEdit
|
#we need this to get $R::sessionid to FormEdit
|
||||||
#if(length($coo) > 20 && !$q->cookie(-name=>'domcookie')){
|
#if(length($coo) > 20 && !$q->cookie(-name=>'domcookie')){
|
||||||
($api_return,$users_sharee) = $apif->auth_verify($q,$author->{authcookie},"");
|
($api_return,$users_sharee) = $apif->auth_verify($q,$author->{authcookie},"");
|
||||||
if($R::failure =~ /\w+/ || ($users_sharee->{txt31} && $users_sharee->{txt31} =~ /\w/)){
|
if(($returnwww && $returnwww =~ /\w+/) || ($users_sharee->{txt31} && $users_sharee->{txt31} =~ /\w/)){
|
||||||
print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_1}?sessionid=$coo");
|
print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_1}?sessionid=$coo");
|
||||||
exit 0;
|
exit 0;
|
||||||
}else{
|
}else{
|
||||||
|
@ -456,7 +456,7 @@ sub handler {
|
||||||
$dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde
|
$dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde
|
||||||
}
|
}
|
||||||
|
|
||||||
$tk->emailack($users_sharee->{c_id}) if($users_sharee->{int04} != 1);
|
#$tk->emailack($users_sharee->{c_id}) if($users_sharee->{int04} != 1);
|
||||||
$dbt->update_operatorsloop($varenv{dbname},$users_sharee->{c_id},"update");
|
$dbt->update_operatorsloop($varenv{dbname},$users_sharee->{c_id},"update");
|
||||||
|
|
||||||
print redirect("$varenv{wwwhost}/$varenv{mandant}/$varenv{profile}?$returnwww$session_and");
|
print redirect("$varenv{wwwhost}/$varenv{mandant}/$varenv{profile}?$returnwww$session_and");
|
||||||
|
|
|
@ -14,14 +14,10 @@ use POSIX;
|
||||||
use CGI ':standard';
|
use CGI ':standard';
|
||||||
use Email::MIME;
|
use Email::MIME;
|
||||||
use IO::All;
|
use IO::All;
|
||||||
use Email::Sender::Simple qw(sendmail);
|
|
||||||
use Net::SMTP;
|
use Net::SMTP;
|
||||||
use Try::Tiny;
|
use Try::Tiny;
|
||||||
use Config::General;
|
use Config::General;
|
||||||
use Sys::Hostname;
|
|
||||||
my $hostname = hostname;
|
|
||||||
|
|
||||||
use Lib::Config;
|
|
||||||
use Mod::Basework;
|
use Mod::Basework;
|
||||||
use Mod::DBtank;
|
use Mod::DBtank;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
@ -34,7 +30,6 @@ sub new {
|
||||||
}
|
}
|
||||||
|
|
||||||
my $q = new CGI;
|
my $q = new CGI;
|
||||||
my $cf = new Config;
|
|
||||||
my $bw = new Basework;
|
my $bw = new Basework;
|
||||||
my $dbt = new DBtank;
|
my $dbt = new DBtank;
|
||||||
|
|
||||||
|
@ -47,117 +42,60 @@ sub send_mail(){
|
||||||
my $sendref = shift;
|
my $sendref = shift;
|
||||||
my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
|
my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
|
||||||
|
|
||||||
my $mail_from = $sendref->{mail_from} || $mailxconf{mailx_default}->{mail_from};
|
open(EMA, ">> $dbt->{copri_conf}->{logdir}/mailtransport.log");
|
||||||
my $mail_to = $sendref->{mail_to} || $mailxconf{mailx_default}->{mail_to};
|
|
||||||
my $subject = $sendref->{subject} || "subject fails";
|
my $mail_from = $sendref->{mail_from} || $mailxconf{$sendref->{mailxcfg}}->{mail_from};
|
||||||
|
my $mail_to = $sendref->{mail_to} || $mailxconf{$sendref->{mailxcfg}}->{mail_to};
|
||||||
my $filename = $sendref->{filename} || "";
|
my $filename = $sendref->{filename} || "";
|
||||||
my $message = $sendref->{message} || "Failure, no message\n";
|
|
||||||
#If caller use utf8, message is encoded as utf-8
|
|
||||||
#$message = Encode::encode('utf-8', Encode::decode('iso-8859-1', $message));
|
|
||||||
|
|
||||||
#Special tink statisk, readdir with filename
|
print EMA "\n$now_dt, start mailing to: $mail_to | subject: $sendref->{subject}\n";
|
||||||
#$filename like "2018-12"
|
|
||||||
my @files = ($filename);
|
|
||||||
|
|
||||||
#disabled because of zipping
|
my $html = "<html><head><title>$sendref->{subject}</title></head><body style='text-align:left;border:0px solid silver;padding:15px;margin:2%;width:90%;'>\n";
|
||||||
#TODO, check what happens about Statistik-occubike_station_2019-1-konrad.csv
|
$html .= "<div>$sendref->{message}</div>\n";
|
||||||
#Okay, send_mail breaks on verylong Statistik lines. CSV zipping is the solution
|
$html .= "<div>$sendref->{signature}</div>\n" if($sendref->{signature});
|
||||||
#@files = $lb->read_dirfiles("$dbt->{copri_conf}->{basedir}/csv",$filename,"file","") if($filename =~ /\d+-\d+/);
|
$html .= "</body></html>";
|
||||||
|
|
||||||
if($dbt->{copri_conf}->{stage} eq "test"){
|
|
||||||
$mail_to = $mailxconf{mailx_default}->{mail_to};
|
|
||||||
$subject .= " * offline Test *";
|
|
||||||
}
|
|
||||||
|
|
||||||
$bw->log("Trying send_mail:$0",$sendref,"");
|
$bw->log("Trying send_mail:$0",$sendref,"");
|
||||||
|
|
||||||
|
|
||||||
if(ref($sendref) eq "HASH"){
|
if(ref($sendref) eq "HASH"){
|
||||||
|
|
||||||
$mailxconf{mailx_default}->{sasl_password} = Encode::encode('iso-8859-1', Encode::decode('utf-8', $mailxconf{mailx_default}->{sasl_password}));
|
my $smtp = Net::SMTP->new($mailxconf{$sendref->{mailxcfg}}->{mail_gateway},
|
||||||
my $transport = Email::Sender::Transport::SMTPS->new(
|
Port => 465,
|
||||||
host => "$mailxconf{mailx_default}->{mail_gateway}",
|
Hello => 'sharee.bike',
|
||||||
ssl => 'ssl',
|
Timeout => 30,
|
||||||
port => 465,
|
Debug => 0,
|
||||||
sasl_username => "$mailxconf{mailx_default}->{sasl_username}",
|
SSL => 1,
|
||||||
sasl_password => "$mailxconf{mailx_default}->{sasl_password}",
|
);
|
||||||
helo => "$mailxconf{mailx_default}->{mail_from}",
|
|
||||||
debug => 1,
|
|
||||||
);
|
|
||||||
|
|
||||||
|
$smtp->auth($mailxconf{$sendref->{mailxcfg}}->{sasl_username},$mailxconf{$sendref->{mailxcfg}}->{sasl_password});
|
||||||
|
$smtp->mail($mailxconf{$sendref->{mailxcfg}}->{mail_from});
|
||||||
|
|
||||||
#multipart message
|
if($dbt->{copri_conf}->{stage} eq "test"){
|
||||||
#Email::MIME !!!
|
$mail_to = $mailxconf{$sendref->{mailxcfg}}->{mail_to};
|
||||||
if(1==1){
|
$sendref->{subject} .= "* offline Test *";
|
||||||
my @parts = ();
|
}
|
||||||
|
|
||||||
my $parts_1 = (
|
if ($smtp->to($mail_to)) {
|
||||||
Email::MIME->create(
|
$smtp->data();
|
||||||
attributes => {
|
$smtp->datasend("To: $mail_to\n");
|
||||||
content_type => "text/plain",
|
$smtp->datasend("Subject: $sendref->{subject}\nMIME-Version: 1.0\nContent-Type: text/html; charset=UTF-8 \n\n");
|
||||||
#disposition => "attachment",
|
$smtp->datasend($html);
|
||||||
encoding => "quoted-printable",
|
$smtp->dataend();
|
||||||
charset => "UTF-8",
|
} else {
|
||||||
},
|
print EMA $smtp->message();
|
||||||
body_str => "$sendref->{message}",
|
}
|
||||||
),
|
|
||||||
);
|
|
||||||
push(@parts,$parts_1);
|
|
||||||
|
|
||||||
|
sleep 1;
|
||||||
foreach $filename (@files){
|
#return $?;
|
||||||
if($filename){
|
|
||||||
my $parts_0 = (
|
|
||||||
Email::MIME->create(
|
|
||||||
attributes => {
|
|
||||||
filename => "$filename",
|
|
||||||
#content_type => "application/pdf",
|
|
||||||
#content_type => "text/csv",
|
|
||||||
content_type => "application/octet-stream",
|
|
||||||
disposition => "attachment",
|
|
||||||
encoding => "quoted-printable",
|
|
||||||
name => "$filename",
|
|
||||||
},
|
|
||||||
body => io( "$dbt->{copri_conf}->{basedir}/csv/$filename" )->binary->all,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
$bw->log("Attachment:$dbt->{copri_conf}->{basedir}/csv/$filename","","");
|
|
||||||
push(@parts,$parts_0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$message = Email::MIME->create(
|
|
||||||
header_str => [ From => "$mail_from",
|
|
||||||
To => "$mail_to",
|
|
||||||
Subject => "$subject", ],
|
|
||||||
parts => [ @parts ],
|
|
||||||
);
|
|
||||||
#$message->charset_set( 'UTF-8' );
|
|
||||||
print $message->as_string;
|
|
||||||
}#if not Email::Mime
|
|
||||||
else{
|
|
||||||
|
|
||||||
$message = Email::Simple->create(
|
|
||||||
header => [
|
|
||||||
From => "$mail_from",
|
|
||||||
To => "$mail_to",
|
|
||||||
Subject => "$subject",
|
|
||||||
],
|
|
||||||
body => "$sendref->{message}",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
sendmail($message, { transport => $transport });
|
|
||||||
} catch {
|
|
||||||
$bw->log("FAILURE send_mail:$0",$sendref,"");
|
|
||||||
warn "Error sending mail: $_";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
print EMA "done mailing with state: $?\n";
|
||||||
|
print EMA "\n\n";
|
||||||
|
close EMA;
|
||||||
|
|
||||||
$bw->log("Success send_mail","","");
|
$bw->log("Success send_mail","","");
|
||||||
|
|
||||||
|
|
||||||
}#end mail_send
|
}#end mail_send
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -139,7 +139,7 @@ my $ctadr = &get_contentadr($c_id,$emailpw) if($c_id =~ /^\d+$/ || $emailpw =~ /
|
||||||
|
|
||||||
|
|
||||||
#$varenv{sasl_password} = Encode::encode('iso-8859-1', Encode::decode('utf-8', $varenv{sasl_password}));
|
#$varenv{sasl_password} = Encode::encode('iso-8859-1', Encode::decode('utf-8', $varenv{sasl_password}));
|
||||||
$smtp->auth($mailxconf{mailx_default}->{sasl_username},$mailxconf{mailx}->{sasl_password});
|
$smtp->auth($mailxconf{mailx_default}->{sasl_username},$mailxconf{mailx_default}->{sasl_password});
|
||||||
$smtp->mail($mailxconf{mailx_default}->{mail_from});
|
$smtp->mail($mailxconf{mailx_default}->{mail_from});
|
||||||
|
|
||||||
my $smtp_return = "";
|
my $smtp_return = "";
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
#!/usr/bin/perl -w
|
|
||||||
|
|
||||||
#2021-03-17
|
|
||||||
#redisgn because of BEGIN, use Net::SMTP; and executed in src/scripts
|
|
||||||
#
|
|
||||||
#sudo su www-data -c "./src/scripts/newsletter_post.pl 'shareedms-primary' 'send_cardexpire'"
|
|
||||||
#
|
|
||||||
#TODO, migrate it all to MailTransport.pm
|
|
||||||
#
|
|
||||||
#
|
|
||||||
use vars qw($syshost);
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
$syshost = $ARGV[0] || exit 1;
|
|
||||||
}
|
|
||||||
use lib "/var/www/copri-bike/$syshost/src";
|
|
||||||
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use utf8;
|
|
||||||
use Encode;
|
|
||||||
use CGI ':standard';
|
|
||||||
use DBI;
|
|
||||||
use POSIX;
|
|
||||||
use Email::MIME;
|
|
||||||
use IO::All;
|
|
||||||
use Email::MIME::CreateHTML;
|
|
||||||
use Email::Sender::Simple qw(sendmail);
|
|
||||||
use Net::SMTP;
|
|
||||||
use Try::Tiny;
|
|
||||||
use URI::Encode;
|
|
||||||
my $uri_encode = URI::Encode->new( { encode_reserved => 1 } );
|
|
||||||
use Data::Dumper;
|
|
||||||
|
|
||||||
use Sys::Hostname;
|
|
||||||
my $hostname = hostname;
|
|
||||||
|
|
||||||
use Lib::Config;
|
|
||||||
my $q = new CGI;
|
|
||||||
my $cf = new Config;
|
|
||||||
my %varenv = $cf->envonline("","$syshost");
|
|
||||||
|
|
||||||
my $today = strftime("%d.%m.%Y %H:%M:%S",localtime(time));
|
|
||||||
my $todo = $ARGV[1];
|
|
||||||
|
|
||||||
open(EMA, ">> $varenv{logdir}/newsletter_post.log");
|
|
||||||
print EMA "\n$today, start mailing\n";
|
|
||||||
print EMA "'$todo\n";
|
|
||||||
|
|
||||||
my $smtp_return = "";
|
|
||||||
if($todo eq "send_cardexpire"){
|
|
||||||
my ($mail_to,$subject,$body,$signature) = send_cardexpire(\%varenv);
|
|
||||||
$smtp_return = transport(\%varenv,$mail_to,$subject,$body,$signature);
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------
|
|
||||||
sub send_cardexpire {
|
|
||||||
my $varenv = shift;
|
|
||||||
|
|
||||||
my $mail_to = "ragu\@gnu-systems.de";
|
|
||||||
my $name = "test";
|
|
||||||
|
|
||||||
my $subject = "Fahrradmietsystem Konstanz";
|
|
||||||
my $body = <<EOF
|
|
||||||
Guten Tag $name,
|
|
||||||
|
|
||||||
wir mussten Ihren Fahrradmietsystem Account sperren weil der letzte Mietbetrag nicht eingezogen werden konnte.
|
|
||||||
Sie können Ihren Account selbst wieder freischalten, indem Sie die Zahlungsdaten erneuern. Dies kann aus Sicherheitsgründen von Seiten Ihrer Bank nötig sein oder es gab einen Fehler in Ihren Eingaben.
|
|
||||||
|
|
||||||
Nach der Anmeldung im Fahrradmietsystem Konstanz ( <a href='https://www.stadtwerke-konstanz.de/mobilitaet/rad-mietsystem?konrad_goto=Anmelden'>https://www.stadtwerke-konstanz.de/mobilitaet/rad-mietsystem</a> ) haben Sie die Möglichkeit Ihre Daten zu überprüfen und ggf. zu erneuern.
|
|
||||||
Kontaktieren Sie uns bitte falls Ihr Account für den Verleih nicht automatisch freigeschaltet wurde.
|
|
||||||
|
|
||||||
Für weitere Fragen wenden Sie sich bitte an unsere Buchhaltung unter: buchhaltung\@fahrradspezialitaeten.com oder telefonisch 0761/5158912 (Mo, Mi, Fr 9-12 Uhr)
|
|
||||||
|
|
||||||
EOF
|
|
||||||
;
|
|
||||||
$body =~ s/\n/\<br \/>/g;
|
|
||||||
|
|
||||||
my $signature = "";
|
|
||||||
|
|
||||||
return ($mail_to,$subject,$body,$signature);
|
|
||||||
}
|
|
||||||
#---------------------------------------------------
|
|
||||||
#
|
|
||||||
sub transport {
|
|
||||||
my $varenv = shift;
|
|
||||||
my $mail_to = shift;
|
|
||||||
my $subject = shift;
|
|
||||||
my $body = shift;
|
|
||||||
my $signature = shift;
|
|
||||||
|
|
||||||
my $html = "<html><head><title>$subject</title></head><body style='text-align:left;border:0px solid silver;padding:15px;margin:2%;width:90%;'>\n";
|
|
||||||
$html .= "<div>$body</div>\n";
|
|
||||||
$html .= "<div>$signature</div>\n";
|
|
||||||
$html .= "</body></html>";
|
|
||||||
|
|
||||||
my $smtp = Net::SMTP->new($varenv->{mail_gateway},
|
|
||||||
Port => 465,
|
|
||||||
Hello => 'TeilRad',
|
|
||||||
Timeout => 30,
|
|
||||||
Debug => 0,
|
|
||||||
SSL => 1,
|
|
||||||
);
|
|
||||||
$smtp->auth($varenv->{sasl_username},$varenv->{sasl_password});
|
|
||||||
$smtp->mail($varenv->{mail_from});
|
|
||||||
|
|
||||||
if($hostname ne "ginger"){
|
|
||||||
$mail_to = $varenv->{mail_testto};
|
|
||||||
$subject .= "* offline Test *";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($smtp->to($mail_to)) {
|
|
||||||
$smtp->data();
|
|
||||||
$smtp->datasend("To: $mail_to\n");
|
|
||||||
$smtp->datasend("Subject: $subject\nMIME-Version: 1.0\nContent-Type: text/html; charset=UTF-8 \n\n");
|
|
||||||
$smtp->datasend($html);
|
|
||||||
$smtp->dataend();
|
|
||||||
print EMA "$?\n";
|
|
||||||
} else {
|
|
||||||
print EMA $smtp->message();
|
|
||||||
}
|
|
||||||
|
|
||||||
sleep 1;
|
|
||||||
return $?;
|
|
||||||
}
|
|
||||||
#----------------------------------------------------
|
|
||||||
|
|
||||||
print EMA "done mailing: $?\n";
|
|
||||||
print EMA "\n\n";
|
|
||||||
close EMA;
|
|
||||||
|
|
||||||
1;
|
|
Loading…
Add table
Reference in a new issue