mail_chk($address_string)zen2han($string)sendAmail()custommail()
Ssm::Mail - ssm2対応 メール送信用モジュール
$Id: Ssm-Mail1_31.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).