前回、メールの送受信する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を使用しておったので、入れ直したらコンパイルエラーが外れました。
ありがとうございます。
いろいろ試してみます!