1.2

2013/11/25 17:44 に joymate tomida が投稿
■2013.11.26|送信メール 本文中に「.」ドットのみの行がある場合のトラブル。
MailMakerPop+ Send Library Ver.1.2

問題:
メール本文中の本文中に「.」ドットのみの行があった場合、受信側でそれ以降のデータを受信出来ない。
メール本文中の行頭に「.」ドットが合った場合、「.」ドットが削除される。
メール本文中の行頭の「.」ドットは、「..」にする必要があるが、
「.NET Framework 2.0/3.0/3.5/4.0」の環境下では、「.」ドットがエスケープされない。
「.NET Framework 4.5」では、改善されエスケープされる。
この問題は、「.NET FrameworkのAlternateViewクラス」で本文を追加した場合に起こります。
MailMakerPop+は、送信処理に「.NET FrameworkのAlternateViewクラス」を利用しています。
解決策:
・解決策[1]
.NET Framework 4.0の場合、行頭の「.」ドットを2つ「..」にする。
iill_SMTP_setBody_Add( "plain" ; Substitute ( simpleExample_send::body_text ; "¶." ; "¶.." ) )
iill_SMTP_setBody_Add( "html" ; Substitute ( simpleExample_send::body_html ; "¶." ; "¶.." ) )
・解決策[2]
送信処理を行うPCを.NET Framework 4.5にする。
この場合、スクリプトの書き換えは、不要です。
・解決策[3]
.NET Framework 4.0|4.5 混在の場合、
iill_SMTP_setBody_Add( "plain" ; Substitute ( simpleExample_send::body_text ; "¶." ; "¶ ." ) )
iill_SMTP_setBody_Add( "html" ; Substitute ( simpleExample_send::body_html ; "¶." ; "¶ ." ) )
※但し、この方法の場合、行頭にドットがあった場合、受信側で「スペース+ドット」になってしまいます。

・行頭にトットを「スペース+ドット」に置換で対応。
ファイル:MMPSLib(.fp7|.fmp12)
スクリプト:lib_Set_Body

変更前:
#plain text
変数を設定 [$er; 値:iill_SMTP_setBody_Add( "plain" ; MailSTemp::bodyText )/*plain,html*/]
If [$er ≠ 0]
フィールド設定 [MMPSLib::gER; MMPSLib::gER & "¶" & $er]
End If
#html
If [ not  IsEmpty ( MailSTemp::bodyHTML )]
変数を設定 [$er; 値:iill_SMTP_setBody_Add( "html" ; MailSTemp::bodyHTML )/*plain,html*/]
End If
If [$er ≠ 0]
フィールド設定 [MMPSLib::gER; MMPSLib::gER & If ( IsEmpty ( MMPSLib::gER ) ; "" ; "¶" ) & Get ( スクリプト名 ) & "|" & $er]
End If

変更後:
#plain text
変数を設定 [$text; 値:Let([Body=MailSTemp::bodyText;Body=¶ & Body;Body=Substitute ( Body ; "¶." ; "¶ ." )];Replace ( Body ; 1 ; 1 ; "" ))]
変数を設定 [$er; 値:iill_SMTP_setBody_Add( "plain" ; $text )/*plain,html*/]
If [$er ≠ 0]
フィールド設定 [MMPSLib::gER; MMPSLib::gER & "¶" & $er]
End If
#html
If [ not  IsEmpty ( MailSTemp::bodyHTML )]
変数を設定 [$html; 値:Let([Body=MailSTemp::bodyHTML;Body=¶ & Body;Body=Substitute ( Body ; "¶." ; "¶ ." )];Replace ( Body ; 1 ; 1 ; "" ))]
変数を設定 [$er; 値:iill_SMTP_setBody_Add( "html" ; $html )/*plain,html*/]
End If
If [$er ≠ 0]
フィールド設定 [MMPSLib::gER; MMPSLib::gER & If ( IsEmpty ( MMPSLib::gER ) ; "" ; "¶" ) & Get ( スクリプト名 ) & "|" & $er]
End If
Comments