{'_action'} eq 'store_article') { &store_article($mib,$e); } ... #メールをmysqlに書き込む sub store_article { my ($mib, $e) = @_; my ($subject,$body,$date,$hdate); my ($ml, $query, $res,$dt); $hdate = $e->{'h:Date:'}; $hdate =~ s/ (JST) //; $date = " "; use DateTime::Format::Strptime; use DateTime::Format::MySQL; my $strp = DateTime::Format::Strptime->new(pattern => '%a, %d %b %Y %H:%M:%S %z', on_error => 'croak' ); $dt = $strp->parse_datetime($hdate); $date = DateTime::Format::MySQL->format_datetime($dt); $addr = $addr || $mib->{'_address'}; $addr = &main::LowerDomain($addr); $ml = $mib->{'_ml_acct'}; &main::Log("$mib->{'_action'} $addr"); $body = $e->{'Body'}; $subject = $e->{'h:Subject:'}; $res = $dbh->prepare("insert into article values (?, ?, ?, ?,?)"); $res->execute($mib->{'_article_id'}, $body, $addr, $subject,$date); if ($mib->{'error'}) { return $NULL;} } ... phpでメールを表示する $sql = "select * from article order by date desc"; $result = $con->query($sql); echo "メーリングリスト(一斉メール)の記録"; while($rows = $result->fetch_array(MYSQLI_ASSOC)){ $subject = mb_decode_mimeheader($rows['Subject']); $body = nl2br(mb_convert_encoding($rows['body'], "UTF-8", mb_detect_encoding($rows['body']))); echo "{$rows['date']} {$subject} "; echo "メールアドレス:{$rows['addr']}"; echo $body.""; } " />
itoigawaのブログ
2015-04-10
メーリングリストfmlでmysqlデータベースでメールアドレスを管理する。
mysqldriver.plは
databases/mysql/toymodel.plを使用する。
すでに稼働中であったのでmembersの内容をmysqlに手入力した。
create table ml (
ml varchar(64),
file varchar(64),
address varchar(64),
off int(11),
options varchar(64)
);
config.pl $USE_DATABASE = 1; $DATABASE_METHOD = "mysql"; $DATABASE_DRIVER = "mysqldriver.pl"; $SQL_SERVER_HOST = "example.com"; $SQL_SERVER_PORT = "3306"; $SQL_SERVER_USER = "user"; $SQL_DATABASE_NAME = "DB_NAME"; $SQL_SERVER_PASSWORD = "password";
create table article (
id int(11),
body text,
addr varchar(64),
Subject varchar(64),
date datetime
);
mysqldriver.pl
...
elsif ($mib->{'_action'} eq 'store_article') {
&store_article($mib,$e);
}
...
#メールをmysqlに書き込む
sub store_article
{
my ($mib, $e) = @_;
my ($subject,$body,$date,$hdate);
my ($ml, $query, $res,$dt);
$hdate = $e->{'h:Date:'};
$hdate =~ s/ (JST) //;
$date = " ";
use DateTime::Format::Strptime;
use DateTime::Format::MySQL;
my $strp = DateTime::Format::Strptime->new(pattern => '%a, %d %b %Y %H:%M:%S %z', on_error => 'croak' );
$dt = $strp->parse_datetime($hdate);
$date = DateTime::Format::MySQL->format_datetime($dt);
$addr = $addr || $mib->{'_address'};
$addr = &main::LowerDomain($addr);
$ml = $mib->{'_ml_acct'};
&main::Log("$mib->{'_action'} $addr");
$body = $e->{'Body'};
$subject = $e->{'h:Subject:'};
$res = $dbh->prepare("insert into article values (?, ?, ?, ?,?)");
$res->execute($mib->{'_article_id'}, $body, $addr, $subject,$date);
if ($mib->{'error'}) { return $NULL;}
}
...
$sql = "select * from article order by date desc"; $result = $con->query($sql); echo "メーリングリスト(一斉メール)の記録"; while($rows = $result->fetch_array(MYSQLI_ASSOC)){ $subject = mb_decode_mimeheader($rows['Subject']); $body = nl2br(mb_convert_encoding($rows['body'], "UTF-8", mb_detect_encoding($rows['body']))); echo ""; }{$rows['date']} {$subject}"; echo "メールアドレス:{$rows['addr']}
"; echo $body."