前回は、HTMLメールを作成したが、今回は、添付ファイル付メールです。

メールの送信の全体の流れは変わりませんので、今回は添付ファイルのメッセージを作成する部分だけ説明します。

ただし、今回もライブラリを新しくなったので、こちらからもっとも新しいバージョンをダウンロードしてください。
前回、setTextBodyにちょっとバグを埋め込んでしまいましたしたので、こちらも修正しました。(詳細)

さて、添付メールの説明です。
といっても非常に簡単です。

var contentType:ContentType = ContentType.MULTIPART_MIXED;
var mimeMsg:MimeMessage = new MimeMessage(contentType);
:
省略
:
var filePart:MimeBinaryPart = new MimeBinaryPart();
filePart.setAttachementFile(File.desktopDirectory.resolvePath("image.jpg"),"添付ファイル.jpg");
mimeMsg.addChildPart(filePart);

sender.send(mimeMsg);
sender.close();

で終了です。
ここで、MimeBinaryPartは、自動的にContent-Typeが、application/octet-streamになります。
また、

filePart.setAttachementFile(file:File,filename:String):void

で、添付ファイルをつけます。
上の例のように、添付するファイルが画像の場合には以下のようにContent-Typeを変更してもいいかもしれません。

var filePart:MimeBinaryPart = new MimeBinaryPart()
filePart.contentType.setMainType("image");
filePart.contentType.setSubType("jpeg");

または、

filePart:MimeImagePart = new MimeImagePart();

とすることで、image/xxxx のようになります。
xxxxの部分は、添付するファイルの拡張子で変わります。

関連記事

3 Responses to “air:airxmailでメールを送信する(3) – マルチパート(添付ファイル)メールを送る”

  • kenji iwasaki より:

    こんにちは。
    添付ファイルを送りたくて参考にさせていただいていますが、載っているソースを使用してテストをしていますが、本文(Body)を入れると添付ファイルなしのメールが送られ、本文なしだとうまく添付ファイルが送れます。なにか考えられることはありますか?
    ちなみに以下テストソースです。
    package
    {
    import com.coltware.airxmail.ContentType;
    import com.coltware.airxmail.INetAddress;
    import com.coltware.airxmail.MailSender.SMTPSender;
    import com.coltware.airxmail.MimeBinaryPart;
    import com.coltware.airxmail.MimeMessage;
    import com.coltware.airxmail.MimeTextPart;
    import com.coltware.airxmail.RecipientType;
    import flash.display.Sprite;
    import flash.filesystem.File;
    import org.purepdf.pdf.fonts.StreamFont;
    public class airxMail extends Sprite
    {
    public function airxMail()
    {
    }
    public function sendmail():void
    {
    var sender:SMTPSender = new SMTPSender();
    // ここで必要な環境設定を行う
    //サーバー名
    sender.setParameter(SMTPSender.HOST,[MySMTP]);
    //ポート番号:SMTPSender.PORT(数値型)
    sender.setParameter(SMTPSender.PORT,25);
    //認証を使う指定:SMTPSender.AUTH(Boolean型)
    sender.setParameter(SMTPSender.AUTH,false);
    //ユーザ名:SMTPSender.USERNAME(文字列型)
    sender.setParameter(SMTPSender.USERNAME,[USER NAME]);
    sender.setParameter(SMTPSender.PASSWORD,[PASSWORD]);
    //SSL/TLSを使う指定:SMTPSender.SSL(Boolean型)
    sender.setParameter(SMTPSender.SSL,false);
    var contentType:ContentType = ContentType.MULTIPART_ALTERNATIVE;
    var mimeMsg:MimeMessage = new MimeMessage(contentType);
    var from:INetAddress = new INetAddress();
    from.personal = [XXXXX];
    from.address = [e-mail];
    mimeMsg.setFrom(from);
    var toAddr:INetAddress = new INetAddress([e-mail],[XXXXX]);
    mimeMsg.addRcpt(RecipientType.TO,toAddr);
    // set mail subject
    mimeMsg.setSubject(“これは日本語メールです”);
    mimeMsg.setTextBody(“this is multipart message”);
    // TextPart
    var partText:MimeTextPart = mimeMsg.createTextPart();
    partText.setText(“これは通常の本文”);

    //添付ファイル
    var filePart:MimeBinaryPart = new MimeBinaryPart();
    filePart.setAttachementFile(File.documentsDirectory.resolvePath([FileName]),[FileName]);
    mimeMsg.addChildPart(filePart);
    sender.send(mimeMsg);
    sender.close();
    }
    }
    }
    以上、何かわかれば教えてください。

  • kenji iwasaki より:

    すみません。当方の間違いが見つかりました。
    var contentType:ContentType = ContentType.MULTIPART_MIXED;

    var contentType:ContentType = ContentType.MULTIPART_ALTERNATIVE;
    としていました。
    修正後うまくいきました。失礼しました。

  • coltware より:

    よかったです。
    返事が遅れている間に、解決できたようで・・

    このあたりは、MIMEの仕様の部分で・・・
    たとえば、ALTERNATIVE(multipart/alternative)などは、
    HTMLメールなどに使うのですが・・

    たいていは、multipart/mixedで問題ないはずです。

    すぐに返事が出来かはわかりませんが、
    その他でも、何かあったら気軽に質問してください。

Leave a Reply

Spam protection by WP Captcha-Free

ソフトウェア&ライブラリ



ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
カレンダー
2010年2月
« 1月   3月 »
1234567
891011121314
15161718192021
22232425262728

カスタム検索
RSS
Add to Google
にほんブログ村 IT技術ブログへ