コンテンツにスキップ

以前のサンプルテンプレート

サンプルテンプレート

おすすめテンプレート(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
Back to top