| Tripletail documentation | Contained in the Tripletail distribution. |
Tripletail::Sendmail - メールの送信を行う
my $sendmail = $TL->newSendmail
->connect
->send(
-from => 'null@example.org',
-rcpt => 'null@example.org',
-data => '.....',
)
->disconnect;
$TL->newSendmail($inigroup);
Tripletail::Sendmail オブジェクトを作成。 引数には ini で設定したグループ名を渡す。 引数省略時は 'Sendmail' グループが使用される。
$smail->setTimeout($sec);
タイムアウトまでの秒数を設定する。 引数については Tripletail::Sendmail::Smtp、Tripletail::Sendmail::MailQueue、Tripletail::Sendmail::Esmtp を参照。
$smail->connect;
メール送信先に接続を行い、sendメソッドの準備を整える。 引数については Tripletail::Sendmail::Smtp、Tripletail::Sendmail::MailQueue、Tripletail::Sendmail::Esmtp を参照。
$smail->disconnect;
メール送信先との接続を切断する。
$smail->send(-from => $from, -rcpt => $rcpt, -data => $data) $smail->send(-from => $from, -rcpt => [$rcpt,...], -data => $data)
-from、-rcpt を省略した場合は、-dataのヘッダから宛先を抽出し、送信する。 connectの後に呼ばなければならないが、複数回呼び出すことが出来る。 sendメソッドを使用した後は、disconnectしなければならない。
method = smtp
送信メソッドを指定する。省略可能。 指定可能なメソッドはsmtp、sendmail、mailqueue、 esmtp の3種類。
デフォルトはsmtp。
logging = 1
ログの取得の可否を指定する。省略可能。 0の場合、ログを取得しない。 1の場合、ログを取得する。
デフォルトは0。
各送信メソッドのクラスの ini パラメータの項を参照。
Copyright 2006 YMIRLINK Inc.
This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself
このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。
Address bug reports and comments to: tl@tripletail.jp
HP : http://tripletail.jp/
| Tripletail documentation | Contained in the Tripletail distribution. |
# ----------------------------------------------------------------------------- # Tripletail::Sendmail - ã¡ã¼ã«ã®éä¿¡ãè¡ã # ----------------------------------------------------------------------------- package Tripletail::Sendmail; use strict; use warnings; use Tripletail; 1; sub _new { my $class = shift; my $group = shift; $group = defined $group ? $group : 'Sendmail'; # iniã®methodãã©ã¡ã¼ã¿ã«å¿ãã¦å®éã®ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãä½ãã my $method = $TL->INI->get($group => 'method'); if(!defined($method)) { $method = 'smtp'; } if($method eq 'smtp') { require Tripletail::Sendmail::Smtp; Tripletail::Sendmail::Smtp->_new($group); } elsif($method eq 'sendmail') { require Tripletail::Sendmail::Sendmail; Tripletail::Sendmail::Sendmail->_new($group); } elsif($method eq 'mailqueue') { require Tripletail::Sendmail::MailQueue; Tripletail::Sendmail::MailQueue->_new($group); } elsif($method eq 'esmtp') { require Tripletail::Sendmail::Esmtp; Tripletail::Sendmail::Esmtp->_new($group); } else { die "TL#newSendmail: unknown method [$method] is defined for the INI group [$group]. (Iniãã¡ã¤ã«ã®methodã®æå®ã䏿£ã§ã)\n"; } } sub setTimeout { # ããã©ã«ãã®å®è£ ã§ã¯ä½ãããªã shift; } sub connect { # ããã©ã«ãã®å®è£ ã§ã¯ä½ãããªã shift; } sub disconnect { # ããã©ã«ãã®å®è£ ã§ã¯ä½ãããªã shift; } sub send { # ãªã¼ãã¼ã©ã¤ãããªããã°ã¨ã©ã¼ die __PACKAGE__."#send: internal error: this method has to be overridden. (å é¨ã¨ã©ã¼:ãã®ã¡ã½ããã¯ãªã¼ãã¼ã©ã¤ããããªããã°ãªãã¾ãã)\n"; } sub _setLogging { # ããã©ã«ãã®å®è£ ã§ã¯ä½ãããªã # TLå é¨ã§ã®ã¨ã©ã¼å¦çç¨ã«ããã°ä¿åã®ãªãã·ã§ã³ã夿´ãããã¨ãã«å¼ã³åºãããã # iniãã¡ã¤ã«ã®loggingãããã¡ãã®æå®ãåªå ããªããã°ãªããªãã shift; } sub _getoptSend { my $this = shift; my $pkg = ref($this); my $data = do { my %hash = @_; %hash = map { my $key = $_; my $val = $hash{$key}; $key =~ s/^-//; $key => $val; } keys %hash; \%hash; }; if(!defined($data->{data})) { die "$pkg#send: arg[data] is not defined. (dataãæå®ããã¦ãã¾ãã)\n"; } if(!defined($data->{from}) || !defined($data->{rcpt})) { # çç¥ããã¦ããã®ã§æ¬æããèªã¿åºã local *addr = sub { my $str = shift; defined $str or return undef; $str =~ s/^\s*|\s*$//g; if($str =~ m/<(.+?)>\s*$/) { $1; } else { $str; } }; my $mail = $TL->newMail->set($data->{data}); $data->{from} = addr($mail->getHeader('From')); $data->{rcpt} = addr($mail->getHeader('to')); } if(!defined($data->{from})) { die "$pkg#send: arg[from] is undef but the data don't have a valid `From' header. (fromãæå®ããã¦ããããdataãããæ¨æ¸¬ã§ãã¾ãã)\n"; } if(!defined($data->{rcpt})) { die "$pkg#send: arg[rcpt] is undef but the data don't have a valid `To' header. (rcptãæå®ããã¦ããããdataãããæ¨æ¸¬ã§ãã¾ãã)\n"; } if(ref($data->{rcpt}) ne 'ARRAY') { $data->{rcpt} = [ $data->{rcpt} ]; } $data; } __END__