電子メールを送信する最も簡単な方法は、ブラウザのビルトイン・サポートである、ハイパーリンクの mailto 属性を利用することです。
Define_Com Class(#PRIM_PHBN) Name(#Send) Caption('Send') Parent(#COM_OWNER) Width(109) Height(114)
Define_Com Class(#prim_alph) Name(#Mailto)
Define_Com Class(#prim_alph) Name(#Parameters)
Evtroutine Handling(#Com_owner.Initialize)
#To := "Sample@_YourSite_.Com"
#CC := "CC_Sample@_YourSite_.Com"
#BCC := "BCC_Sample@_YourSite_.Com"
#Subject := "Sample subject"
#Message := "Sample message content."
Endroutine
Evtroutine Handling(#Send.Click)
#Com_owner.MailTo
Endroutine
Mthroutine Name(MailTo)
#Mailto := ("mailto:&1").Substitute( #To )
#Com_owner.Addparameter( CC #CC )
#Com_owner.Addparameter( BCC #BCC )
#Com_owner.Addparameter( Subject #Subject )
#Com_owner.Addparameter( Body #Message )
#sys_web.navigate( (#Mailto + #Parameters) current )
Endroutine
Mthroutine Name(AddParameter) Access(*Private)
Define_Map For(*Input) Class(#xDemoUnicode128) Name(#Name)
Define_Map For(*Input) Class(#xDemoUnicode4K) Name(#Value)
If (#Parameters = "")
#Parameters := "?"
Endif
If (#Parameters <> "?")
#Parameters += "&"
Endif
If (#Value = "")
#Value := "???"
Endif
#Parameters += ("&1=&2").Substitute( #Name #Value.ReplaceAll( " " "%20" ) )
Endroutine
この例では、SYS_WEB.navigate 用に提供された URL は次のような値を持つようになります。
注:URL には厳しい構文ルールがあり、空白スペースはサポートされません。URL によりサポートされる ASCII のサブセットにない文字を含むには、その文字をパーセント・エンコーディングする必要があります。バイト x20 は ASCII エンコーディングではブランクを意味するので、パーセント・エンコーディングの値は %20 となります。パーセント・エンコーディングの値の詳細については、「HTML URL Encoding Reference」を参照してください。
mailto 属性が使用されると、ブラウザによりデフォルトの電子メール・プログラムが開かれ、アドレスやその他リンクに指定されたパラメータが設定されます。
長所
導入が簡単で広くサポートされています。
短所
処理がクライアント側で行われ、ページにリストされた電子メール・アドレスか (これを保護する方法があるものの) スパムボットにより奪われる可能性があります。また電子メールの宛先はユーザーも見ることができます。
さらに、すべてのユーザーの PC で、サポートされる電子メールのデフォルト・アプリケーションが正しく構成されているとは限りません。