2011年12月18日日曜日

カメラで撮影した画像をメールで送る

JavaMailを利用してgoogleのGmailにメールを送る場合


package com.android;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;

import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.StrictMode;

public class AndroidTestActivity extends Activity {
 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Camera camera = Camera.open(0);//カメラを開く
        camera.takePicture(null, null, mPictureListener);
        
  setContentView(R.layout.main);
    }

 private Camera.PictureCallback mPictureListener = new Camera.PictureCallback() {
  public void onPictureTaken(byte[] data, Camera camera) {
   // メールで画像を送る
         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
         
         final String mUser = "kameji2000@gmail.com";
         final String mPassword = "xxxx";

         Properties props = new Properties();

         props.put("mail.smtp.host", "smtp.gmail.com");// SMTPサーバ名
         props.put("mail.smtp.port", "587"); // SMTPサーバポート
         props.put("mail.smtp.auth", "true");// smtp auth
         props.put("mail.smtp.starttls.enable", "true");// STTLS

         Session sess = Session.getInstance(props);

         MimeMessage mimeMsg = new MimeMessage(sess);
         
         try {

             mimeMsg.setFrom(new InternetAddress(mUser));//Fromアドレス
             mimeMsg.setRecipient(Message.RecipientType.TO, new InternetAddress(mUser));//送信先アドレス
             mimeMsg.setContent("body", "text/plain; utf-8");
       mimeMsg.setHeader("Content-Transfer-Encoding", "7bit");
       mimeMsg.setSubject("テスト送信");//件名
       //mimeMsg.setText("アンドロイドからの送信", "utf-8");//本文
       
       MimeBodyPart textPart = new MimeBodyPart();
       textPart.setText("アンドロイドからの送信", "utf-8");//本文
       
        //4, 画像ファイルを添付&設定  
             MimeBodyPart image = new MimeBodyPart();
             DataSource ds = new ByteArrayDataSource(data, "application/x-any");
             image.setDataHandler(new DataHandler(ds));
             image.setFileName("camera.jpg");
             
             MimeMultipart body = new MimeMultipart();
             body.addBodyPart(textPart);                
             body.addBodyPart(image);
             
             mimeMsg.setContent(body); 
       
       Transport transport = sess.getTransport("smtp");
       transport.connect(mUser, mPassword);
       transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());// メール送信
       transport.close();

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

  }
 };

}

関連記事

0 件のコメント:

コメントを投稿