前回、メールの送受信するAIRのライブラリ公開(airxmail)をお知らせしたが、
今回は、オーソドックスなメールの送信方法を紹介します。

その前に、必要なライブラリをサイトからダウンロードしてください。
ダウンロードタブから、coltware_airxmail_r15.swcをダウンロードしてください。

airxmailのサイト

このサンプルで必要なクラス

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メールのサンプルですが、添付ファイル付のメールなども送れます。

もうちょっと、応用した使い方は今後紹介していきます。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

12 Responses to “air:airxmailでメールを送信する(1)”

  • 通りすがり より:

    すごいですね!
    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

  • coltware より:

    ありがとうございます。

    そういっていただけると、うれしいです。
    さて、エラーの原因ですが、設定とかの問題ではないと思います。
    環境の違いではないかなーと思っています。
    (すいません。私も、あまりFlashや、Flexの他人の環境となるとわかっていません。)

    私の環境は、AIR1.5 以上で、 Flex SDK3.4で作業を行っております。
    (たしか、私も似たようなエラーがでたなーという記憶があったのですが・・・・)

    もしかして、このライブラリをModuleとして組み込んではいないでしょうか?
    そして、FlexSDKのバージョンが3.2とかということはないでしょうか?

    もし、ここに情報を載せるのは・・・ということでしたら、直接メールをいただければ見ますし、
    Flexのバージョンを指定していただければ、そのバージョンで作り直してみますので、まずはそれでご連絡いただけないでしょうか?

    よろしくお願いいたします。

  • たちあおい より:

    レスが遅くなって申し訳ないです。FlexSDK3.4ですか!
    3.2を使用しておったので、入れ直したらコンパイルエラーが外れました。
    ありがとうございます。

    いろいろ試してみます!

  • あすなろ より:

    FlashBuilder burritoのモバイルプロジェクトでこのライブラリは使えないですか?
    まずは検証しようかと思いメール送信はできました。ただ受信ができないんですけど

  • coltware より:

    わからないです。
    実際、FlashBuilder burritoのモバイルプロジェクトの制限などがわかるような情報はないでしょうか?
    モバイルプロジェクトということは、Android版のAIRとかで動かせるか
    ということでしょうか?

  • あすなろ より:

    android版のAIRですね。 モバイルプロジェクトで最適化されているクラスとされていないクラスがあるんですけど。それが原因かと思ったんで。でも無事受信ができました。USERNAMEが間違ってたのと、あとclient.uidl();ってしたらできました。

  • coltware より:

    よかったです。
    私もAndroid版のAIRで試してみようかなと思っているのですが、
    私のIS03がAndroid 2.1なのと、やっぱりモバイルならIMAPかなというところで、
    そちらのほうは全くまだ未着手で、今はせっせとIMAPの方を実装中です。

    ちなみに、実機でもできたのですか?
    もし、できたのであれば教えてもらえるとうれしいです。

  • あすなろ より:

    実機で試してみたんですが、メールの受信はできてるようですが文字化けしてますw
    文字化けなおせたら、また報告しますねw

  • coltware より:

    よろしくお願いいたします。
    気がついたところがあったら言ってください

  • あすなろ より:

    ちょっと質問なんですけど受信したメッセージについてなんですが
    private function messageHandler(e:POP3MessageEvent):void{
    var msg:MimeMessage = e.getMimeMessage();
    trace(“SUBJECT:” + msg.subject);
    }
    とすると表示する文字コードはiso-2022-jpですか?

  • coltware より:

    なんと言いますか?
    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/
    ですね。

    これ以上になるとソースをみるしか・・・
    というレベルです。

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2010年1月
« 12月   2月 »
 123
45678910
11121314151617
18192021222324
25262728293031

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ