mail_chk($address_string)
zen2han($string)
sendAmail()
custommail()
Ssm::Mail - ssm2対応 メール送信用モジュール
$Id: Ssm-Mail1_30.html,v 1.2 2018/08/12 23:34:55 sugu Exp $
use Ssm::Mail;
$from = 'myname@mydomain.com, "Your Name" <yourname@yourdomain.com>'; print "from アドレスに指定できるのは1つのアドレスのみです。\n" unless (&mail_chk($from) == 1);
$input_mail = "myname@mydomain.com"; $valid_mail = &zen2han($input_mail);
print $error unless &sendAmail( 'myname@mydomain.com', 'こんにちは', '始めまして。文字コードは設定したコードに変換されて送信されます。', \$error, );
ミドルウェアSSM用のメール送信用関数モジュールです。対応しているのは ssm2 です。 関数内では、ssm2(実行ファイル)で定義するパッケージ main または Ssm::Config 内の変数(.ssmrc 内で指定)を使用します。いくつかの変数はメール送信の際に必須です。詳細は、.ssmrc を参照して下さい。
mail_chk($address_string)
myaccount@mydomain.com "My Name" <myname@mydomain.com> 'My Name' <myname@mydomain.com>
正しくない形式の場合: 0 単一アドレスとして正しい場合: 1 複数アドレスとして正しい場合: 2
メールアドレスが1個でも末尾にカンマがつく場合、2を返す。 連続したカンマがある場合、または、カンマの間にホワイトスペースのみしかない場合は0を返す。 改行を含む場合は 0を返す。
$from = 'myname@mydomain.com, "Your Name" <yourname@yourdomain.com>'; print "from アドレスに指定できるのは1つのアドレスのみです。\n" unless (&mail_chk($from) == 1);
zen2han($string)
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890 @!?”#$%&’()=−¥+^*{}[]<>。、.,:;/ (全角スペース)
$input_mail = "myname@mydomain.com"; $correct_mail = &zen2han($input_mail);
sendAmail()
添付ファイルを指定した配列の参照(※) *! 送信先アドレス(複数指定可能) *! メールサブジェクト *! メール本文 * エラーメッセージ格納変数への参照 CCアドレス(複数指定可能) BCCアドレス(複数指定可能) +! FROMアドレス(1アドレスのみ) +! ERROR-TOアドレス(1アドレスのみ) +! REPLY-TOアドレス(1アドレスのみ) +! SMTPサーバ名まはたIPアドレス SMTPサーバへの接続のタイムアウトまでの秒数(デフォルト=30秒)※下記注参照 送信前にSMTPサーバのping応答をチェックするか(0または1、デフォルト=0)
* = 引数が必須 + = .ssmrc でデフォルト値を指定できる、 ! = はメール送信に必須(引数または.ssmrcでの指定が必須)
※ 添付ファイルを指定した配列の形式 @filelist = ( 'filepath1', 'filepath2', 'filepath3', );
または @filelist = ( ['filepath1','filename1'], ['filepath2','filename2'], ['filepath3','filename3'], );
filepath# = システム中のファイルの絶対パス filename# = 添付ファイル名として指定するファイル名(ベース名+拡張子)
メール送信成功の場合: 1 失敗の場合: 0
指定したエラーメッセージ参照の解決された変数に、エラーメッセージを格納
print $error unless &sendAmail( 'myname@mydomain.com', 'こんにちは', '始めまして。文字コードは設定したコードに変換されて送信されます。', \$error, );
custommail()
*! メールサブジェクト *! メール本文 * エラーメッセージ格納変数への参照 *! 個人別情報のフィールド名リストへの参照 *! 個人情報格納ファイルのパス 送信成功者リスト格納ファイルのパス 送信できなかったリスト格納ファイルのパス エラーログファイルのパス +! FROMアドレス(1アドレスのみ) +! ERROR-TOアドレス(1アドレスのみ) +! REPLY-TOアドレス(1アドレスのみ) +! SMTPサーバ名まはたIPアドレス SMTPサーバへの接続のタイムアウトまでの秒数(デフォルト=60秒) 送信前にSMTPサーバのping応答をチェックするか(0または1、デフォルト=1)
* = 引数が必須 + = .ssmrc でデフォルト値を指定できる、 ! = はメール送信に必須(引数または.ssmrcでの指定が必須)
メール送信成功の場合: 1 失敗の場合: 0
送信の際の失敗でエラーを返すことは無い。すべてのメール送信が失敗しても、その記録がログとして残り、実行そのものは成功を返す。失敗するのは、必要な変数が指定されていない等の、設定上の問題があった時のみ。 指定したエラーメッセージ参照の解決された変数に、エラーメッセージを格納
フィールド名を'%_'と'_%'で囲った文字列がメール本文中にあると、それらが、そのフィールドに対応する個人情報に置換される。
個人情報格納ファイルには、置換対象項目以外に、行の先頭にメールアドレスを含める必要がある。(置換対象にメールアドレスが含まれる場合も同様。)
# cat datafile.txt john@smith.com::John Smith::john@smith.com::1970-10-02 jeff@brown.com::Jeff Brown::jeff@brown.com::1955-03-27
#in perl script @fiels = ('name', 'mail', 'bd');
custommail( 'サブジェクトにはお名前を含めません', 'こんにちは。%_name_%さん。あなたのメールアドレスは%_mail_%、お誕生日は%_bd_%ですね。', \$error, \@fiels, 'datafile.txt' );
サブジェクトもカスタマイズしたいときは&sendAmailをループ内で使用するコードを書いて下さい。 サブジェクトを変更しなくていいときは、どちらでも同じ様にメールが送れます。 &custommailの方が指定の決まりが少し煩雑です。
&sendAmail はアドレス等の形式エラー、必須項目が未記入だった時、 およびSMTPサーバがエラーを返したときにエラーを返します。 (SMTPサーバのタイムアウトに関するエラーについては、&sendAmail の注を参照して下さい。)
&custommailはアドレス等の形式エラー、必須項目が未記入だった時にエラーを返しますが、SMTPサーバがエラーを返した時、SMTPサーバが見つからない時は、個々のメール送信のエラーとしてログに書き出すだけで、エラーを返しません。(SMTP サーバの ping 応答チェックをする設定であれば、送信前に ping 応答をチェックして、エラーがあればエラーを返します。) 一旦メール送信を開始したら、個別のエラーが出ても、スクリプト内の処理はそのまま進みます。
Miyabiko INOUE <miy@web-ware.org> バグ等の御連絡は mailto:miy@web-ware.org までお願いいたします。
Copyright (c) Miyabiko INOUE <miy@web-ware.org>. All rights reserved.
このモジュールは無償でご利用いただけます。 改変、再配布などの使用許諾に関しては、Perl の Artistic License を適用します。
This program is free software; you can redistribute it and/or modify it under Perl Artistic License.
Further information: http://www.web-ware.org/
perl(1).