目次 †
内容 †
参考 †
使い方 †
- メールアドレスの一覧をemails.txtに保存
- メールアドレスを改行で区切っていれる
- 余計な情報は入れない
- 変数を適宜修正
- $server
- 利用するサーバ
- $mailFrom
- メール送信者(日本語使用不可)
- $mailTitle
- メールタイトル
- $mailBody
- EOFの部分まで直に入力
確認している問題点 †
スクリプトの内容 †
- UTF-8で保存すること!
#!/usr/local/bin/perl -w
use strict;
use warnings;
use Net::SMTP;
use Encode;
use utf8;
my $jis = find_encoding( "jis" );
###==============================================================================
### 初期設定
###==============================================================================
my $server = "localhost";
my $mailFrom = '[email protected]';
my $mailTitle = "題名";
my $emailList = "emails.txt";
my $mailBody = <<'EOF';
メール本文をここに挿入
EOF
###==============================================================================
### 処理開始
###==============================================================================
### メールアドレスの確認
my @emails;
{
open( my $fhIn, $emailList ) || die( "Can't open email list" );
while( <$fhIn> ){
chomp;
next unless $_;
push( @emails, $_ ) if( isEmail( $_ ) );
}
close $fhIn;
}
### メールアドレス毎に送信処理
my $count;
foreach my $mailTo ( @emails ){
print sprintf( "%04d", ++$count ) . ": $mailTo\n";
# オブジェクトの作成
my $SMTP = Net::SMTP->new( $server );
#ヘッダ部の組み立て
$SMTP->mail( $mailFrom );
$SMTP->to( $mailTo );
#データ部の組み立て
$SMTP->data();
$SMTP->datasend( "From:$mailFrom\n" );
$SMTP->datasend( "To:$mailTo\n" );
$SMTP->datasend( "Subject:" . encode( $jis, $mailTitle ) . "\n" );
$SMTP->datasend( "Mime-Version: 1.0\n" );
$SMTP->datasend( "Content-type: text/plain; charset=ISO-2022-jp\n" );
$SMTP->datasend( "Content-transfer-encoding: 8bit\n" );
$SMTP->datasend( "\n" ); # ヘッダとボディの境目
$SMTP->datasend( encode( $jis, $mailBody ) );
$SMTP->dataend();
$SMTP->quit;
# 少し待つ
sleep 1;
}
### 終了
exit;
###==============================================================================
### 処理開始
###==============================================================================
sub isEmail{
my $mail_regex =
q{(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\} .
q{\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][} .
q{^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x} .
q{80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-} .
q{\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(} .
q{\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\0} .
q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} .
q{\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} .
q{;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} .
q{^\x80-\xff])*\]))*};
return ( $_[0] =~ /$mail_regex/ ) ? 1 : 0;
}
|