以前のサンプルテンプレート
サンプルテンプレート
おすすめテンプレート(2016.1.28現在)
Mail_template8[MMPLib2]
サンプルテンプレートについて!
特に制限は、ありません! ご自由にお使い下さい!
サンプルテンプレート使用上の注意
一つのフィールドに入っているデータが大きいのでFileMakerのファイル破損のリスクが高くなっています。 データのバックアップは当然ですが、 サンプルテンプレートをカスタマイズした場合は、そのFileMakerのファイル自体(SYSTEM)のバックアップもおすすめします。
当方では、テストも兼ねて「Mail_template3」(改良版)を実務で使用しています。
以下ファイルがFileMakerの不正終了により破損した事があります。
「Mail_template3.fp7
」「mail_body.fp7
」
ファイルを閉じる時に以下のスクリプトを実行しています。
スクリプト名:データなしコピー
変数を設定 [$path; 値:DayOfWeek ( Get ( 日付 ) ) & "_" & Get ( ファイル名 ) & ".fp7"]
名前を付けて保存 [「$path」; データなし]
FileMaker Server を利用するか、 FileMaker共有機能を使用しHostのPCは操作しない。とする事でFileMakerの不正終了によるファイル破損のリスクは低くなります。
Mail_template7[MMPLib2]
サンプルテンプレートは、無料でご使用いただけます。
ご自由にカスタマイズしてご利用下さい。
開発会社様は、エンドユーザー様のシステムに組み込んでご利用いただけます。
「ご質問」・「ご相談」は、
掲示板
http://joy-h.com/bbs/viewforum.php?id=1
または、
ChatWork(MailMakerPop+ Q&A)
https://www.chatwork.com/g/mailmakerpop
で、お願いします。
FileMaker スクリプトエンジン 対応! (FileMaker Server スケジュール FileMakerスクリプト で利用可能!)
FileMaker Server スケジュール FileMakerスクリプト で 受信処理をする場合、
ファイル:Mail_template7.fp7(.fmp12) の
スクリプト:受信 を FileMaker Server スケジュール に設定して下さい。
注意
2013.02.21 または、2013.2.25に
Mail_template7[MMPLib2][fp7].zip
または、
Mail_template7[MMPLib2][fmp12].zip
方へ!
ファイル:Mail_template7.fp7(.fmp12)
スクリプト名:受信[1アカウント]
内に、以下の記述があり、
変数を設定 [$fire; 値:iill_TextFile_Write( "D:\!TEMP\\" & Filter ( Get(タイムスタンプ) ; "0123456789" ) & "|" & $er & "|" & $AccountTit.....
この記述を削除して下さい!
2013.02.25 アップロード 修正済み!
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template7[MMPLib2][fmp12].zip |
v.4 | |
Mail_template7[MMPLib2][fp7].zip |
v.4 |
Mail_template6[MMPLib]
動作検証:
OS:Windows 7,XP SP3
FileMaker Pro 11
MMPLibファイルを利用する事でメールの受信スクリプトがカンタンになります。
既存のファイルメーカーのファイルへの組み込みも容易になります!
以下のスクリプト1つだけでメールの受信を行う事ができます!
スクリプト名: 受信
スクリプト実行 [ 「login(hostname,port,SSL,username,password,SaveDirectory,remove)」 , ファイル: 「MMPLib」; 引数: account::POP_Server & ¶ & account::POP_Port & ¶ & account::POP_SSL & ¶ & account::POP_Username & ¶ & account::POP_Password & ¶ & account::SaveDirectory & ¶ & account::サーバーから削除する受信後何日 ]
フィールド設定 [ SYSTEM::gER; Get(スクリプトの結果) ]
#
レイアウト切り替え [ 「List」 (mailer) ]
変数を設定 [ $ERROR; 値:"" ]
Loop
スクリプト実行 [ 「ReceiveMail」 , ファイル: 「MMPLib」 ]
変数を設定 [ $er; 値:Get(スクリプトの結果) ]
Exit Loop If [ $er = 0 ]
If [ $er = 1 ]
新規レコード/検索条件
フィールド設定 [ mailer::受信日; Get(日付) ]
フィールド設定 [ mailer::UIDL; MMPLib_MailTemp::UIDL ]
フィールド設定 [ mailer::header; MMPLib_MailTemp::header ]
フィールド設定 [ mailer::Subject; TextStyleAdd ( MMPLib_MailTemp::Subject; 太字) ]
フィールド設定 [ mailer::From; MMPLib_MailTemp::From ]
フィールド設定 [ mailer::To; MMPLib_MailTemp::To ]
フィールド設定 [ mailer::Cc; MMPLib_MailTemp::Cc ]
フィールド設定 [ mailer::ReplyTo; MMPLib_MailTemp::ReplyTo ]
フィールド設定 [ mailer::Date変換前; MMPLib_MailTemp::Date変換前 ]
フィールド設定 [ mailer::Date変換後; MMPLib_MailTemp::Date変換後 ]
フィールド設定 [ mailer::bodyText; MMPLib_MailTemp::bodyText ]
フィールド設定 [ mailer::bodyHTML; MMPLib_MailTemp::bodyHTML ]
フィールド設定 [ mailer::MailPath; MMPLib_MailTemp::MailPath ]
フィールド設定 [ mailer::読込文字コード; MMPLib_MailTemp::読込文字コード ]
フィールド設定 [ mailer::アイテム数; MMPLib_MailTemp::アイテム数 ]
変数を設定 [ $n; 値:1 ]
Loop
Exit Loop If [ $n>10 ]
フィールド設定 [ mailer::body添付ファイル[$n]; MMPLib_MailTemp::body添付ファイル[$n] ]
変数を設定 [ $n; 値:$n+1 ]
End Loop
フィールドへ移動 [ ]
Else If [ $er = "+UserCancel" ]
#MMPWindowの[キャンセル]ボタンを押した
Exit Loop If [ 1 ]
Else
#エラー
変数を設定 [ $ERROR; 値:$ERROR & If ( IsEmpty ( $ERROR ) ; $er ; ¶ & $er ) ]
End If
End Loop
スクリプト一時停止/続行 [ 間隔(秒): 1 ]
#ログアウト
スクリプト実行 [ 「logoff」 , ファイル: 「MMPLib」 ]
If [ not IsEmpty ( $ERROR ) ]
カスタムダイアログを表示 [ タイトル: "ERROR!"; メッセージ: "[ERROR:5]以上の場合、メールの受信ができていません。¶¶" & $ERROR; ボタン: 「OK」 ]
End If
フィールドへ移動 []
サンプルファイル:「Mail_template6」使用方法
「Mail_template6 | Account」レイアウトでメールサーバーの設定をします。
AccountName:任意の名前です。
POP_Server:受信メールサーバー | 例:pop3.lolipop.jp
POP_Port:ポート | 例:110 , 995 など
POP_SSL:ssl 0 または、1 | 「このサーバーはセキュリティで保護された接続 (SSL) が必要」の場合は、「1」
POP_Username:受信メールサーバー ユーザー名
POP_Password:受信メールサーバー パスワード
SaveDirectory:受信したメールファイルの保存フォルダ
サーバーから削除する受信日から[ ]日後空欄は削除しない:「0」に設定した場合、最初に受信処理をした時には、サーバー上のメールは削除しません。再度、受信処理をした時に、サーバー上のメールが削除されます。
空欄=削除しない。
ログイン[TEST] クリックして下さい。
「+OK 16 2166373」の様に「+OK」とメールの件数・容量が表示されれば、OK!
ログアウト クリックして下さい。必ず!
Mail_template6 | Mail」レイアウトでメールメールを受信します。
[Account]右横の「DefaultAccount」を上記で設定した「AccountName:任意の名前」にして下さい。
「DefaultAccount」を変更していない場合は、そのままでOK。
受信 クリック。
修正【MailMakerPop+Library for Receive】|MMPLib.fp7(.fmp12) Ver.1.1|2013.02.07
返信先メールアドレス(Reply-To:)を取得すべきところ、
送信元(Return-Path:)を取得していました。
ファイル名:MMPLib.fp7(.fmp12)
スクリプト名:_header情報取得
1|フィールド設定 [MailTemp::header; iill_GetHeader]
2|フィールド設定 [MailTemp::Subject; iill_GetInfo( "Subject:" )]
3|フィールド設定 [MailTemp::From; iill_GetInfo( "From:" )]
4|フィールド設定 [MailTemp::To; iill_GetInfo( "To:" )]
5|フィールド設定 [MailTemp::Cc; iill_GetInfo( "Cc:" )]
6|フィールド設定 [MailTemp::ReplyTo; iill_GetInfo( "Return-Path:" )]
7|フィールド設定 [MailTemp::Date変換前; iill_GetInfo( "Date:" )/*From,To,Cc,Subject など*/]
8|スクリプト実行 [「└ヘッダーの日付変換」]
6行目
フィールド設定 [MailTemp::ReplyTo; iill_GetInfo( "Return-Path:" )]
を
フィールド設定 [MailTemp::ReplyTo; iill_GetInfo( "Reply-To:" )]
に変更。
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template6[MMPLib]1_1.zip |
v.1 | |
Mail_template6[MMPLib][fmp12]1_1.zip |
v.1 |
Mail_template4v2改
*.emlメールファイルからFileMakerへインポート。
「Mail_template4v2改」は、Hiroさんのご厚意により公開させて頂いております!
*.emlメールファイルから
Subject:
To:
From:
などのヘッダー情報、
メール本文、添付ファイルをFileMakerへインポートする事ができます。
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template4v2改.zip |
v.1 |
Mail_template4
メールをTEXTファイルでローカルに保存。
添付ファイルをローカルに保存、FileMakerでは参照保存。
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template4.zip |
v.3 |
Mail_template3
Mail_template3 Ver BETA
FileMaker Pro 11 専用 テンプレート
MailMakerPop+.fmx 1.0.5.2 (MailMakerPop3.dll 1.0.5.2)
アカウント:admin
パスワード:なし
MailMakerPop+.fmxは、Ver 1.0.5.2 以降が必要です。
「Mail_Template3.fp7」で使用しているアイコンについて:
Some Icons are Copyright © Yusuke Kamiyamane. All rights reserved.
修正版(最新):Mail_template3_release(3).zip
■メールサーバー上の UUID リスト取得 高速化
既に、Mail_template3_release(2) 以前のファイルを使用中の場合、の更新方法。
https://joy-h.com/bbs/viewtopic.php?id=116
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template3_release(2).zip |
v.1 | |
Mail_template3_release(3).zip |
v.1 | |
Mail_template3_release.zip |
v.2 |
メールアカウント設定
mail_account.fp7
メールアカウント設定
メールを保存するフォルダ (必須)
受信したメールメッセージをTEXTファイル形式で指定されたフォルダへ保存します。
バックアップ用メールアドレス
送受信時にメッセージのバックアップを下記に送ります。
(空欄の場合は何も実行しません。)
Gmail専用
Gmailの場合、パスワードを設定しておくと定期的に自動ログインします。(非表示)
Gmailにログインをクリックすると、ieでGmailに自動ログインします。
修正履歴
mail_address_etc.fp7
[終了時スクリプト]を修正
修正前
スクリプト実行 [「終了時削除(name)」 , ファイル: 「addressBookTemp」]
修正後
スクリプト実行 [「終了時削除(name)」 , ファイル: 「addressBookTemp」; 引数: Get ( アカウント名 )]
Mail_template3.fp7
フィールド名:「ReturnPath」
を
「ReplayTo」に変更
Mail_template3 BETA2
Mail_template3 BETA2
スクリプト名:「_header取得」
{
フィールド設定 [Mail_template3::Header; iill_GetHeader]
フィールド設定 [Mail_template3::from; iill_GetInfo( "From" )]
フィールド設定 [Mail_template3::to; iill_GetInfo( "to" )]
フィールド設定 [Mail_template3::Subject; iill_GetInfo( "Subject" )]
フィールド設定 [Mail_template3::ReturnPath; iill_GetInfo( "Return-Path" )]
フィールド設定 [Mail_template3::Cc; iill_GetInfo( "Cc" )]
フィールド設定 [Mail_template3::Date; Let(X=iill_GetInfo( "Date" ); If ( IsEmpty ( X );
スクリプト実行 [「__ヘッダーの日付変換」]
}
上記スクリプト
フィールド設定 [Mail_template3::ReturnPath; iill_GetInfo( "Return-Path" )]
を
フィールド設定 [Mail_template3::ReplyTo; iill_GetInfo( "Reply-To" )]
に変更。
Mail_template1
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template1_v2.zip |
v.2 |
script解説
スクリプト名:_Mailを取得
レイアウト切り替え [「Mail」 (Mail)]
If [IsEmpty ( Get ( スクリプト引数 ) )]
現在のスクリプト終了 []
End If
フィールドへ移動 []
変数を設定 [$mailTXT; 値:iill_GetMailn( Global::index )] /*POPサーバーからメールを取得*/
#[Cancel]ボタンが押された場合、全ての受信を終了
If [$mailTXT = "+UserCancel"] /*MMPウインドウで[Cancel]ボタンが押された場合、iill_GetMailnの戻り値が"+UserCancel"になります。*/
スクリプト実行 [「ログアウト」]
カスタムダイアログを表示 ["受信キャンセル"]
全スクリプト終了
End If
#
新規レコード/検索条件
フィールド設定 [MailText::メール原文; $mailTXT] /*メールの原文を[MailText::メール原文]フィールドへ設定*/
#※メールの原文から情報の再取得をしない場合、保存する必要はありません。
フィールド設定 [Mail::UIDL; Global::UIDL] /*メッセージの重複受信防止の為、UIDLを設定*/
#UIDLとは、POP3サーバーが割り振る、メールメッセージのユニークID
If [Left ( $mailTXT ; 3 ) ≠ "+OK"] /*iill_GetMailn( index )で正常に受信できた場合、先頭の行が"+OK"になります。*/
フィールド設定 [Mail::UIDL; "ERROR:" & Mail::UIDL]
全スクリプト終了
End If
フィールド設定 [Mail::Header; iill_GetHeader] /*メールのHeaderを[Mail::Header]フィールドへ設定*/
#※メールのHeaderから情報の再取得をしない場合、保存する必要はありません。
#Headerから[Header取得項目]フィールドに応じた情報を取得。必要な項目を設定。
変数を設定 [$max; 値:ValueCount ( Global::Header取得項目 )]
Global::Header取得項目
Subject:
From:
Date:
To:
Delivere-To:
Received:
Return-Path:
Content-Type:
Reply-To:
変数を設定 [$n; 値:1]
フィールドへ移動 [Mail_Header::item]
Loop
Exit Loop If [$n>$max]
ポータル内の行へ移動 [選択; ダイアログなし; $n]
フィールド設定 [Mail_Header::item; GetValue( Global::Header取得項目 ; $n )]
フィールド設定 [Mail_Header::vlue; iill_GetInfo( Mail_Header::item )] /*デコードされた文字列を取得します。*/
変数を設定 [$n; 値:$n+1]
End Loop
#
フィールド設定 [Mail::アイテム数; iill_BodyAnalyzer] /*メールメッセージを解析*/
「iill_BodyAnalyzer」でメールの解析を実行すると、以下のように各種情報がPlug-in内に格納されます。
添付ファイルが1つ含まれ、テキスト(text/plain)と、HTML(text/html) を含む場合、
項目番号 0 がテキストメール(text/plain)。
項目番号 1 がHTMLメール(text/html)。
項目番号 2 が添付ファイル。
変数を設定 [$n; 値:0]
フィールドへ移動 [Mail_Body::ItemNumber]
Loop
Exit Loop If [Mail::アイテム数 < $n+1]
ポータル内の行へ移動 [ダイアログなし; $n+1]
フィールド設定 [Mail_Body::ItemNumber; $n]
フィールド設定 [Mail_Body::body; iill_GetBodyn( $n )] /*デコードされた文字列を取得します。※添付ファイルの場合、戻り値はファイル名になります。*/
フィールド設定 [Mail_Body::Type; iill_GetMultipartHeaderInfo( $n ; "Content-Type" )] /*各項目のHeaderから情報を取得。*/
フィールド設定 [Mail_Body::添付ファイルチェック; iill_GetMultipartHeaderInfo( $n ; "Content-Disposition:" )]
#添付ファイルの確認[iill_GetMultipartHeaderInfo( $n ; "Content-Disposition:" ) ]の戻り値に"attachment"があるかどうか?
If [PatternCount ( Mail_Body::添付ファイルチェック ; "attachment" )]
フィールド設定 [Mail_Body::添付ファイル; iill_GetAttachedFile_Field( $n )] /*添付ファイルをフィールドに取得*/
End If
#▼Ver2で追加("Content-Disposition:" で"attachment"が無い場合の処理)
If [IsEmpty ( Mail_Body::添付ファイル )]
If [PatternCount ( Mail_Body::Type ; "name") + PatternCount ( Mail_Body::Type ; "filename")]
フィールド設定 [Mail_Body::添付ファイル; iill_GetAttachedFile_Field( $n )]
End If
End If
#▲Ver2で追加
変数を設定 [$n; 値:$n+1]
End Loop
フィールドへ移動 []
スクリプト名:ログアウト
フィールド設定 [Global::er; iill_SendLine( "QUIT" )] /*メールサーバーへ"QUIT"コマンド送信*/
フィールド設定 [Global::er; iill_ReadLine] /*メールサーバーの応答を受信*/
フィールド設定 [Global::er; iill_Close] /*メールサーバーとの接続を終了*/
フィールド設定 [Global::er; iill_MMpWindow( 0 )] /*MailMakerPopサブウインドウを閉じる*/
スクリプト名:ログイン
フィールド設定 [Global::ログイン結果; 0] /*[Global::ログイン結果]フィールドを初期化*/
フィールド設定 [Global::er; iill_MMpWindow( 1 )] /*MailMakerPOPのサブウインドウを表示*/
フィールド設定 [Global::ログイン結果; iill_login( アカウント::POPサーバー ; アカウント::ポートPOP ; アカウント::SSL_POP ; アカウント::ユーザー名_POP ; アカウント::パスワード_POP ) /*POPサーバーへログイン*/
#ログイン成功の場合、iill_loginの戻り値が「+OK メール数 容量」(例:+OK 12 30943)
フィールド設定 [Global::サーバーのメール数; If ( Left ( Global::ログイン結果 ; 3 ) = "+OK"; GetValue( Substitute (Global::ログイン結果 ; " " ; ¶ ) ; 2 ) ; 0 )] /*サーバー上のメール数を取得し[Global::サーバーのメール数]フィールドに設定*/
スクリプト名:全て実行
スクリプト実行 [「ログイン」]
変数を設定 [$max; 値:Global::サーバーのメール数]
フィールド設定 [Global::index; 1]
Loop
Exit Loop If [Global::index > Global::サーバーのメール数]
#メールサーバー上、index番目のUIDLを取得。UIDLとは?POPサーバーが割り振ったメールメッセージのユニークID
フィールド設定 [Global::UIDL; iill_GetUIDLn(Global::index )]
#UIDLで取得済かどうかを確認
If [Global::CountUIDL = 0]
スクリプト実行 [「_Mailを取得」; 引数: 1]
End If
If [Global::CountUIDL = 1]
レイアウト切り替え [「Global」 (Global)] /*Ver2で追加 削除結果が入らなかったのを修正*/
If [Global::メール削除]
#メールを削除
フィールド設定 [Mail::メール削除結果; iill_DeleteMail( Global::index )]
End If
End If
フィールド設定 [Global::index; Global::index + 1]
End Loop
レイアウト切り替え [「Mail」 (Mail)] /*Ver2で追加*/
スクリプト実行 [「ログアウト」]
データベースの定義
Mail_template1.fp7
テーブル名: アカウント | |
---|---|
POPサーバー | テキスト グローバル |
ポートPOP | テキスト グローバル |
SSL_POP | テキスト グローバル |
POPサーバー | テキスト グローバル |
ユーザー名_POP | テキスト グローバル |
パスワード_POP | テキスト グローバル |
パスワード入力有無 | グローバル, = If ( IsEmpty ( パスワード_POP ); "" ; "**********" ) |
テーブル名: Global | |
---|---|
index | 数字 グローバル |
UIDL | テキスト グローバル |
er | テキスト グローバル |
サーバーのメール数 | 数字 グローバル |
ログイン結果 | テキスト グローバル |
CountUIDL | 計算 非保存, = Count ( Mail::UIDL ) |
メール削除 | 数字 グローバル |
Header取得項目 | テキスト グローバル |
テーブル名: Mail | |
---|---|
fmID | 数字 番号自動入力 |
Header | テキスト |
アイテム数 | 数字 |
UIDL | テキスト |
メール削除結果 | テキスト |
テーブル名: Mail_Header | |
---|---|
fmID | 数字 番号自動入力 |
item | テキスト |
value | テキスト |
テーブル名: Mail_Body | |
---|---|
fmID | 数字 番号自動入力 |
body | テキスト |
itemNumber | 数字 |
Type | テキスト |
添付ファイルチェック | テキスト |
添付ファイル | オブジェクト |
MailText.fp7
テーブル名: Mail_Body | |
---|---|
fmID | 数字 番号自動入力 |
メール原文 | テキスト |
容量が大きくなるので別ファイルで保存
Mail_template0
BETAテスト版に添付していたサンプル。
少し改良版
メールのソースを別ファイルへ保存
添付ファイルを直接フィールドへ保存
ダウンロード | 詳細 | バージョン |
---|---|---|
Mail_template0.zip |
v.2 |