2009年11月21日土曜日

GAEとDoCoMoのアドレス

GAEでメール受信を作りましたが、
初めに試してもらった人が「xxxxx.@docomo.ne.jp」てアドレスでした。

どうも@の前に「.」があるとダメみたいで
getFrom()をやると「local part invalid」ってエラーが出てました。

なのでヘッダーの情報を見て、

 Enumeration<?> enu = aMessage.getAllHeaderLines();  //データ数回繰り返す while ( enu.hasMoreElements() ) {  String line = (String)enu.nextElement();  if ( line.toLowerCase().indexOf("from") >= 0 ) {   //fromを検索して追加   fromAddress.add(line);  } else if ( line.toLowerCase().indexOf("to") >= 0 ) {   //toを検索して追加   toAddress.add(line);  } } 


って感じでFromやToを抜き出して、
そこからアドレスを抽出して処理してみました。

まぁシビアにはまずいかもしれませんが
一応これでメールアドレスを判定する事ができました。

2009年11月15日日曜日

TitleWindowをリサイズする

TitleWindowをリサイズ可能にしようと思い立ち


を元に作成したのだが、スクロールバーなどがあると
かなり挙動不審になりますね。。。

つうことで

onThis_mouseDown() 関数の初めに

    if ( event.target != this ) {     return;    }  

といれると結構安定します。

ちなみに私は
    private const SIZE_DRAGAREA:int = 10;   private const SIZE_MIN_WIDTH:int = 50;   private const SIZE_MIN_HEIGHT:int = 50; 

位で使います。

Blogger・・・トラックバックできない。。。
・・・なんかややこしいけどやり方はあるみたい。
やってみるかな。。。

2009年11月8日日曜日

GAEでメール受信

GAEにメール受信する機能が増えたんですね。
またまたやってくれます。。。。って思ってたら
やっぱり限定の機能なんですね。

・・・まぁそれだけでもすごい事です。
えーと、、、仕組みはここにあります。

string@appid.appspotmail.com

に送ると、

/_ah/mail/


に届くみたいですね。。。。
Cronとか駆使して、、、って考えてたんですけど、
開発環境でみる限り、メールを送信したら、サーブレットをPostしてくれるみたいです!
なんだ、、、色々楽ですね。。。

まず、appengine-web.xmlに


<inbound-services>
<service>mail</service>
</inbound-services>


を追加します。

その後web.xmlに


<servlet>
<servlet-name>mailHandle</servlet-name>
<servlet-class>bz.ziro.kanbe.servlet.MailHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mailHandle</servlet-name>
<url-pattern>/_ah/mail/*</url-pattern>
</servlet-mapping>



<security-constraint>
<web-resource-collection>
<url-pattern>/_ah/mail/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>


を追加します。
servletの上はクラス名、下はURLです。
URLは固定ですね。

下のはセキュリティ設定です。
第三者が触れないようにadmin(アプリ管理者)のみ触れるようにしておきます。

その後HttpServletを派生したクラスを作成して
doPost()を実装します。


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

try {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session, req.getInputStream());



} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}


これで、メールを受け取ったら動作します。
http://localhost:8080/_ah/admin/
にアクセスすると、inboundMailっていうのがあるので
開発環境ではここから送信できます。

先だって話したように、URLとメールアドレスが連動しているので
何のメールかとかをToで判断したりすればOKだと思います。

FlexのリリースビルドをAntで

Flexのリリースビルドを簡単にAntでやろうとしたらハマりました(>_<)


<project name="kanbeMng" default="release" basedir=".">


<taskdef resource="flexTasks.tasks" classpath="D:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\ant\lib\flexTasks.jar"/>
<property name="FLEX_HOME" value="D:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0"/>
<property name="APP_ROOT" value="C:\Documents and Settings\Administrator\My Documents\Flex Builder 3\kanbeMng"/>
<property name="SRC_ROOT" value="${APP_ROOT}\src"/>
<property name="mxmlc.jar" location="${FLEX_HOME}/lib/mxmlc.jar"/>

<property name="debugDir" value="bin-debug"/>
<property name="releaseDir" value="bin-release"/>

<property name="targetDir" value="D:/workspace/kanbe/war/mng"/>
<property name="targetBlankDir" value="D:/workspace/kanbe-blank/war/mng"/>

<property name="flashFile" value="KanbeMng.swf"/>

<target name="release" depends="release-build">
<move file="${SRC_ROOT}\${flashFile}" todir="${releaseDir}" overwrite="true"/>
<copy todir="${targetDir}" file="${debugDir}/${flashFile}" overwrite="true"/>
<copy todir="${targetBlankDir}" file="${releaseDir}/${flashFile}" overwrite="true"/>
</target>

<target name="release-build">

<mxmlc file="${SRC_ROOT}\KanbeMng.mxml"
debug="false"
actionscript-file-encoding="UTF-8"
keep-generated-actionscript="true"
incremental="true">

<compiler.library-path dir="${APP_ROOT}\libs" append="true">
<include name="Efflex_v0.03_fx3_fp9.swc" />
</compiler.library-path>

<compiler.source-path path-element="${SRC_ROOT}"/>

</mxmlc>

</target>
</project>


私のわかる程度に説明します。

まず、自分の環境に合わせて、設定をします。
なんか無駄なものもありそうですね。。。 ...mxmlc.jarはいらないっすね。

でmxmlcタグを作成します。
swcがある場合はそれを読み込みましょう!

ん~キャッシュがウンタラカンタラが難しかったです。
もう少しわかりすく書きたいっすけどね。