前回、メールの送受信するAIRのライブラリ公開(airxmail)をお知らせしたが、
今回は、オーソドックスなメールの送信方法を紹介します。
その前に、必要なライブラリをサイトからダウンロードしてください。
ダウンロードタブから、coltware_airxmail_r15.swcをダウンロードしてください。
このサンプルで必要なクラス
import com.coltware.airxmail.MailSender.SMTPSender; import com.coltware.airxmail.MimeMessage; import com.coltware.airxmail.INetAddress; import com.coltware.airxmail.RecipientType;
SMTPSenderクラスは、SMTPのプロトコルを使ってメールを送信するためのクラスです。
実際のSMTPのプロトコルベースでメールを送信しなくてもいいようにしてあります。
SMTPのプロトコルを意識してプログラムする場合には、SMTPClientというクラスを使う必要があります。
さて、このクラスの大まかな流れですが・・・
var sender:SMTPSender = new SMTPSender(); // ここで必要な環境設定を行う sender.setParameter([KEY],[VALUE]); var msg:MimeMessage = new MimeMessage(); // メッセージオブジェクトの作成 sender.send(msg); sender.close();
のような感じでメールが送れるようにしております。
非常に簡単な感じになっていると思います。
では、setParameterで指定する値ですが、基本的には
- サーバ名:SMTPSender.HOST(文字列型)
だけでもいいのですが、認証(SMTP AUTH)を使っている場合や、gmailなど25番ポート以外場合を使う場合が考えられます。
この場合には、以下のパラメータも指定してください。
- ポート番号:SMTPSender.PORT(数値型)
- 認証を使う指定:SMTPSender.AUTH(Boolean型)
- ユーザ名:SMTPSender.USERNAME(文字列型)
- パスワード:SMTPSender.PASSWORD(文字列型)
- SSL/TLSを使う指定:SMTPSender.SSL(Boolean型)
ただし、SSL/TLSを使う場合には、内部で作成されるオブジェクトが自動的にas3cryptoのオブジェクトが使われますので、
依存するこのライブラリを自前で用意してください。
また、認証はサーバから要求された場合のみ認証するようにしております、もし、うまく認証が動いていないようであれば、
このあたりの処理を疑うといいかもしれません。
では、次にメール本文を作成する処理ですが、
var mimeMsg:MimeMessage = new MimeMessage();
var from:INetAddress = new INetAddress();
from.personal = "送信者";
from.address = this.fromEmail;
mimeMsg.setFrom(from);
var toAddr:INetAddress = new INetAddress(this.toEmail,"受信者");
mimeMsg.addRcpt(RecipientType.TO,toAddr);
// サブジェクトを指定する
mimeMsg.setSubject("初めてのメール");
mimeMsg.setTextBody("これは本文です。\r\n2行目です");
sender.send(mimeMsg);
sender.close();
のようにすればOKです。
ここでは、単純なtextメールのサンプルですが、添付ファイル付のメールなども送れます。
もうちょっと、応用した使い方は今後紹介していきます。



すごいですね!
Googleアプリでメールソフトがありますが、
受信メールのロードがサイトでのアクセスより
かなり遅い感じがしたのは気のせいでしょうか?
完成を期待してます。
すごい良いものを見つけたと思い、早速ライブラリを組み込んでコンパイルしてみたのですがコンパイル時にエラーが、、、
設定がどこか足りてないのかなぁと思うのですが、もし心当たりあればご享受願いたいです。
重大度および説明 パス リソース ロケーション 作成時刻 Id
1044: インターフェイスメソッド allowDomain (名前空間 mx.core:IFlexModuleFactory) はクラス _MyMailApp_mx_managers_SystemManager によって実装されません。 MyMailApp 行 13 1266926752093 19930
1044: インターフェイスメソッド allowInsecureDomain (名前空間 mx.core:IFlexModuleFactory) はクラス _MyMailApp_mx_managers_SystemManager によって実装されません。 MyMailApp 行 13 1266926752093 19929
1044: インターフェイスメソッド get preloadedRSLs (名前空間 mx.core:IFlexModuleFactory) はクラス _MyMailApp_mx_managers_SystemManager によって実装されません。 MyMailApp 行 13 1266926752093 19928
ありがとうございます。
そういっていただけると、うれしいです。
さて、エラーの原因ですが、設定とかの問題ではないと思います。
環境の違いではないかなーと思っています。
(すいません。私も、あまりFlashや、Flexの他人の環境となるとわかっていません。)
私の環境は、AIR1.5 以上で、 Flex SDK3.4で作業を行っております。
(たしか、私も似たようなエラーがでたなーという記憶があったのですが・・・・)
もしかして、このライブラリをModuleとして組み込んではいないでしょうか?
そして、FlexSDKのバージョンが3.2とかということはないでしょうか?
もし、ここに情報を載せるのは・・・ということでしたら、直接メールをいただければ見ますし、
Flexのバージョンを指定していただければ、そのバージョンで作り直してみますので、まずはそれでご連絡いただけないでしょうか?
よろしくお願いいたします。
レスが遅くなって申し訳ないです。FlexSDK3.4ですか!
3.2を使用しておったので、入れ直したらコンパイルエラーが外れました。
ありがとうございます。
いろいろ試してみます!
FlashBuilder burritoのモバイルプロジェクトでこのライブラリは使えないですか?
まずは検証しようかと思いメール送信はできました。ただ受信ができないんですけど
わからないです。
実際、FlashBuilder burritoのモバイルプロジェクトの制限などがわかるような情報はないでしょうか?
モバイルプロジェクトということは、Android版のAIRとかで動かせるか
ということでしょうか?
android版のAIRですね。 モバイルプロジェクトで最適化されているクラスとされていないクラスがあるんですけど。それが原因かと思ったんで。でも無事受信ができました。USERNAMEが間違ってたのと、あとclient.uidl();ってしたらできました。
よかったです。
私もAndroid版のAIRで試してみようかなと思っているのですが、
私のIS03がAndroid 2.1なのと、やっぱりモバイルならIMAPかなというところで、
そちらのほうは全くまだ未着手で、今はせっせとIMAPの方を実装中です。
ちなみに、実機でもできたのですか?
もし、できたのであれば教えてもらえるとうれしいです。
実機で試してみたんですが、メールの受信はできてるようですが文字化けしてますw
文字化けなおせたら、また報告しますねw
よろしくお願いいたします。
気がついたところがあったら言ってください
ちょっと質問なんですけど受信したメッセージについてなんですが
private function messageHandler(e:POP3MessageEvent):void{
var msg:MimeMessage = e.getMimeMessage();
trace(“SUBJECT:” + msg.subject);
}
とすると表示する文字コードはiso-2022-jpですか?
なんと言いますか?
msg.subjectは書かれたままのデータです。
なので、iso-2022-jpかもしれませんし、utf-8かもしれませんし、ASCIIかもしれません。
ただ、mime encodeされているので、文字としてはASCIIと言えばいいのでしょうか?
(ちゃんと、送ったほうがルールを守っていればということですが・・・)
で、プログラム内で文字列としてデータを取ろうと思ったら、
msg.subjectUTF8
を使ってください。
これで、自動的にmimeをdecodeしてUTF8の文字列(つまり、AS3で普通に使える)になります。
でも、それでも文字化けしていれば、msg.subjectがrawデータなのでそこを見ればよいということです。
http://www.coltware.com/2010/02/22/airxmail_connect_pop3/
を参考にしてみてください。
あとは、受信ではないのですが、送信時の文字コード設定関連では、
http://www.coltware.com/2010/07/18/airxmail-change-charset/
ですね。
これ以上になるとソースをみるしか・・・
というレベルです。