{'_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."