リンク

お知らせ

2008/11/15
新しいリリースを出しました。Snow Leopardで動きが微妙な箇所をともかくクリアし、Snow Leopard完全対応です。
2008/5/3
新しいリリースを出しました。/var/mailディレクトリにメールが行ってしまっても定期タスクで復活できるようにしました。
2009/4/26
サイトをリニューアルしました。ただし、リンク切れしている箇所があちらこちらにあるかと思いますが、しばらくの間はお許しください。理由などはblogに記載しました。
2008/4/16
新しいリリースを出しました。小幅な修正のみです。
2008/10/19
新しいリリースを出しました。機能的には変わりません。
2008/6/16
.Macのグループの利用は凍結し、OME blogでの開発者および利用者のコミュニケーションをさせていただくことにしました。
2007/12/9
添付ファイルとしてフォルダを指定すれば、自動的に圧縮して添付して送信するようになりました。
2007/10/26
Quick Lookプラグインが追加されました。Leopard発売と同時に、OMEはその新機能に対応します。
2007/10/7
Cocoa-JavaのアプリケーションがいくつかありましたがそれらをObjective-Cで作り、JavaがCocoaを使う場面をなくしました。
2007/9/3
6月くらいのリリースからだと思われますが、Spotlightプラグインが正しくしませんでしたが、このリリースにより正しく動作するようになりました。インストーラを改善しました。
2007/7/15
イレギュラーなメールの処理や、添付ファイルを中心としたさまざまなバグ修正を行ったバージョンをリリースしました。
2007/6/3
メール参照機能をアップデートなどしたリリースを公開しました。
2007/5/13
バグ修正を中心としたリリースを出しました。
2007/4/21
「OMEメール参照」をアップデートしWebKitベースにしました。表示内容のカスタマイズがより容易になりました。
2007/1/2
Universal Binary版のリリースを行いました。また、フレームワークベースに移行するなど内容にかなり手を入れました。

Class OME

Description

 このクラスは、日本語での正しいメール送信を行うために作ったものです。 解説は、http://mac-ome.jp/site/php.html を参照してください。

 

 history

  • 2003/7/23 「メール送信システムの作り方大全」のサンプルとして制作
  • 2003/9/13 OMEのフリーメール用に少しバージョンアップ
  • 2004/3/26 クラス化した。OMEとして公開する事にした。
  • 2004/4/18 バグフィックス
  • 2004/4/27 バグフィックス(BccやCcができなかったのを修正)
  • 2008/6/6 phpdocumentor向けにコメントを整理、パラメータ設定のメソッドを追加、ファイルをUTF-8にした

Method Summary
stringappendBccField (string $address, [string $name = ''])
voidappendBody (string $str)
booleanappendCcField (string $address, [string $name = ''])
booleanappendToField (string $address, [string $name = ''])
booleancheckControlCodeNothing (string $str)
booleancheckEmail (string $address)
stringdevideWithLimitingWidth (string $str)
stringgetErrorMessage ()
stringheader_base64_encode (string $str, boolean $isSeparateLine)
booleaninsertToTemplate (array $ar)
booleanisInhibitLineEndChar (string $str)
booleanisInhibitLineTopChar (string $str)
booleanisJapanese (string $str)
booleanisSpace (string $str)
booleanisWordElement (string $str)
booleansend ()
booleansetBccField (string $address, [string $name = ''])
voidsetBody (string $str)
voidsetBodyWidth (integer $bytes)
booleansetCcField (string $address, [string $name = ''])
voidsetExtraHeader (string $field, string $value)
booleansetFromField (string $address, [string $name = ''], [boolean $isSetToParam = FALSE])
voidsetSendMailParam (string $param)
voidsetSubject (string $str)
booleansetTemplateAsFile (string $tfile)
voidsetTemplateAsString (string $str)
booleansetToField (string $address, [string $name = ''])
Variables
mixed$bccField = '' (line 34)
mixed$body = '' (line 30)
mixed$bodyWidth = 74 (line 40)
mixed$ccField = '' (line 33)
mixed$errorMessage = '' (line 37)
mixed$extHeaders = '' (line 36)
mixed$fromField = '' (line 35)
mixed$sendmailParam = '' (line 38)
mixed$subject = '' (line 31)
mixed$tmpContents = '' (line 39)
mixed$toField = '' (line 32)
Methods
appendBccField (line 234)

 Bccフィールドに追加する。

  • return: メールアドレスを調べて不正ならfalse(アドレスは追加されない)、そうでなければtrue
string appendBccField (string $address, [string $name = ''])
  • string $address : 送信者のアドレス
  • string $name : 送信者名
appendBody (line 65)

 メールの本文を追加する。既存の本文の後に追加する。

void appendBody (string $str)
  • string $str : メールの本文に追加する文字列
appendCcField (line 196)

 Ccフィールドに追加する。

  • return: メールアドレスを調べて不正ならfalse(アドレスは追加されない)、そうでなければtrue
boolean appendCcField (string $address, [string $name = ''])
  • string $address : 送信者のアドレス
  • string $name : 送信者名
appendToField (line 158)

 Toフィールドに追加する。

  • return: メールアドレスを調べて不正ならfalse(アドレスは追加されない)、そうでなければtrue
boolean appendToField (string $address, [string $name = ''])
  • string $address : 送信者のアドレス
  • string $name : 送信者名。日本語の指定も可能
checkControlCodeNothing (line 311)

 文字列中にコントロールコードが含まれているかを調べる

  • return: 含まれていたらTRUEを返す
boolean checkControlCodeNothing (string $str)
  • string $str : 調べる文字列
checkEmail (line 101)

 メールアドレスが正しい形式かどうかを判断する。

 

 判断に使う正規表現は「^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]+$」なので、完全ではないが概ねOKかと。

  • return: 正しい形式ならTRUE、そうではないときはFALSE
boolean checkEmail (string $address)
  • string $address : チェックするメールアドレス。
devideWithLimitingWidth (line 370)

 文字列を別メソッドで決められたバイト数ごとに分割する。ワードラップ、禁則を考慮する。(内部利用メソッド)

  • return: 分割された文字列
string devideWithLimitingWidth (string $str)
  • string $str : 処理対象の文字列
getErrorMessage (line 49)

 エラーメッセージを取得する。

 

 このクラスの多くの関数は、戻り値がbooleanとなっていて、それをもとにエラーかどうかを判別すできる。 戻り値がfalseである場合、この関数を使ってエラーメッセージを取得できる。

  • return: 日本語のエラーメッセージの文字列
string getErrorMessage ()
header_base64_encode (line 492)

 メールヘッダ用にMIMEに即した文字列に変換する(内部利用メソッド)

 

 ヘッダ文字列として利用できるように、文字列内の日本語の部分をMIMEエンコードする。 文字列の中を日本語と英語に分けて、日本語の部分だけをISO-2022-JPでエンコードする。

  • return: MIMEエンコードした文字列
string header_base64_encode (string $str, boolean $isSeparateLine)
  • string $str : 処理対象の文字列
  • boolean $isSeparateLine : 日本語と英語の境目を改行する
insertToTemplate (line 284)

 テンプレートに引数の配列の内容を差し込み、それをメールの本文とする。既存の本文は上書きされる。

 

 テンプレート中の「@@1@@」が、$ar[0]の文字列と置き換わる。 テンプレート中の「@@2@@」が、$ar[1]の文字列と置き換わる。といった具合に置換する。

 たとえば、配列の要素が5の場合、「@@6@@」や「@@7@@」などがテンプレート中に残るが、 これらは差し込みをしてから強制的に削除される。強制削除があった場合にはfalseを戻すが、 それでも差し込み自体は行われている。

  • return: 差し込み処理が問題なく終わればtrue、そうでなければfalse(たとえばテンプレートに "@@x@@" などの置き換え文字列が残っている場合。それでも可能な限り置き換えを行い、置き換え文字列は削除される)
boolean insertToTemplate (array $ar)
  • array $ar : テンプレートに差し込むデータが入っている配列
isInhibitLineEndChar (line 473)

 引数が日本語の行末禁則文字かどうかを判断する(内部利用メソッド)

  • return: 行末禁則文字ならTRUE
boolean isInhibitLineEndChar (string $str)
  • string $str : 処理対象の文字
isInhibitLineTopChar (line 455)

 引数が日本語の行頭禁則文字かどうかを判断する(内部利用メソッド)

  • return: 行頭禁則文字ならTRUE
boolean isInhibitLineTopChar (string $str)
  • string $str : 処理対象の文字
isJapanese (line 444)

 引数が日本語の文字列かどうかを判断する(内部利用メソッド)

  • return: 日本語ならTRUE
boolean isJapanese (string $str)
  • string $str : 処理対象の文字
isSpace (line 414)

 引数の文字が空白かどうかのチェックを行う。ただ、これは標準の関数を利用すべきかもしれない(内部利用メソッド)

  • return: 空白ならTRUE
boolean isSpace (string $str)
  • string $str : 処理対象の文字
isWordElement (line 427)

 引数の文字が単語を構成する文字(アルファベット、あるいは数値)かどうかのチェックを行う(内部利用メソッド)

  • return: 単語を構成する文字ならTRUE
boolean isWordElement (string $str)
  • string $str : 処理対象の文字
send (line 322)

 メールを送信する。

 

 念のため、To、Cc、Bccのデータにコントロールコードが入っているかどうかをチェックしている。 コントロールコードが見つかればfalseを返し送信はしないものとする。

  • return: メールが送信できればtrue、送信できなければFALSE
boolean send ()
setBccField (line 217)

 Bccフィールドを設定する。すでに設定されていれば上書きされ、この引数の定義だけが残る

  • return: メールアドレスを調べて不正ならfalse(アドレスは設定されない)、そうでなければtrue
boolean setBccField (string $address, [string $name = ''])
  • string $address : 送信者のアドレス
  • string $name : 送信者名
setBody (line 57)

 メールの本文を設定する。既存の本文は置き換えられる。

void setBody (string $str)
  • string $str : メールの本文に設定する文字列
setBodyWidth (line 303)

 本文の自動改行のバイト数を設定する。初期値は74になっている。

void setBodyWidth (integer $bytes)
  • integer $bytes : 改行を行うバイト数。0を指定すると自動改行しない。
setCcField (line 179)

 Ccフィールドを設定する。すでに設定されていれば上書きされ、この引数の定義だけが残る

  • return: メールアドレスを調べて不正ならfalse(アドレスは設定されない)、そうでなければtrue
boolean setCcField (string $address, [string $name = ''])
  • string $address : 送信者のアドレス
  • string $name : 送信者名
setExtraHeader (line 82)

 追加のヘッダを1つ設定する。ただし、Subject、To、From、Cc、Bccは該当するメソッドを使う

void setExtraHeader (string $field, string $value)
  • string $field : 追加するヘッダのフィールド
  • string $value : フィールドの値。日本語を含める場合は自分でエンコードを行う
setFromField (line 117)

 Fromフィールドを設定する。

  • return: 与えたメールアドレスが正しく、引数が適切に利用されればTRUEを返す。メールアドレスが正しくないとFALSEを戻し、内部変数等には与えた引数のデータは記録されない
boolean setFromField (string $address, [string $name = ''], [boolean $isSetToParam = FALSE])
  • string $address : 送信者のアドレスで、アドレスとして正しいかどうかがチェックされる
  • string $name : 送信者名(日本語の文字列はそのまま指定可能)で、省略しても良い
  • boolean $isSetToParam : 送信者アドレスを自動的にsendmailの-fパラメータとして与えて、Return-Pathのアドレスとして使用する場合はTRUE。既定値はFALSE
setSendMailParam (line 90)

 sendmailコマンドに与える追加のパラメータを指定する

void setSendMailParam (string $param)
  • string $param : 追加のパラメータ。この文字列がそのままmb_send_mail関数の5つ目の引数となる
setSubject (line 73)

 メールの件名を設定する。

void setSubject (string $str)
  • string $str : メールの件名に設定する文字列
setTemplateAsFile (line 254)

 指定したファイルをテンプレートとして読み込む。

  • return: ファイルの中身を読み込めた場合true、ファイルがないなどのエラーの場合はfalse
boolean setTemplateAsFile (string $tfile)
  • string $tfile : テンプレートファイル。たとえば、同一のディレクトリにあるファイルなら、ファイル名だけを記述すればよい。
setTemplateAsString (line 268)

 文字列そのものをテンプレートして設定する。

void setTemplateAsString (string $str)
  • string $str : テンプレートとして利用する文字列
setToField (line 141)

 Toフィールドを設定する。すでに設定されていれば上書きされ、この引数の定義だけが残る

  • return: 与えたメールアドレスが正しく、引数が適切に利用されればTRUEを返す。メールアドレスが正しくないとFALSEを戻し、内部変数等には与えた引数のデータは記録されない
boolean setToField (string $address, [string $name = ''])
  • string $address : 送信者のアドレス
  • string $name : 送信者名

  Documentation generated on Mon, 09 Jun 2008 07:32:09 -0700 by phpDocumentor 1.4.1