メール送信(絵文字入り)のサンプル
Androidからメールを送るためには以下のサイトからファイルを3つダウンロードしてきます。
http://code.google.com/p/javamail-android/downloads/list
- additionnal.jar
- mail.jar
- activation.jar
パッケージのフォルダの下に、libsフォルダを作ってコピーします。
eclipseで、[プロジェクト]-[プロパティ]を開いて[Java のビルド・パス]を選択します。
[ライブラリー]タブの[Jar 追加]で先ほどコピーしたjarファイルを追加します。
テストした構成
端末は「Xperia acro IS11S」
@ezweb.ne.jpを@auone.jpに転送してます。
@auone.jpの設定で@ezweb.ne.jpに"なりすまし"してます。
AndroidManifest.xml に以下を追加する
<uses-permission android:name="android.permission.INTERNET" />
package com.example.android.MailDemo; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; import android.widget.Button; import android.widget.EditText; public class MailDemoActivity extends Activity { private Button button; private TextView textView; private EditText editText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.Button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Button1_onClick(); } }); textView = (TextView)findViewById(R.id.TextView1); // 絵文字を入力できる editText = (EditText)findViewById(R.id.EditText1); Bundle bundle = editText.getInputExtras(true); if (bundle != null) { bundle.putBoolean("allowEmoji", true); } } public void Button1_onClick() { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.host", "smtp.gmail.com"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.starttls.enable", "true"); try { final MimeMessage mimeMsg = new MimeMessage(Session.getDefaultInstance(props, new Authenticator() { @Override // 認証データ。アカウント名とパスワードを指定して下さい。 protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("*****@auone.jp", "*****"); } })); char base = 0xE481; String emoji = new String(new char[] {base}); // FROM/TOなど。setTextのあとに一般的(?)なエンコードにしています。 mimeMsg.setFrom(new InternetAddress("*****@ezweb.ne.jp")); mimeMsg.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse("*****@ezweb.ne.jp")); mimeMsg.setSubject("送信テスト" + emoji, "MS932"); mimeMsg.setText("テストメールです。" + emoji, "MS932"); mimeMsg.setHeader("Content-Type", "text/plain; charset=iso-2022-jp"); mimeMsg.setHeader("Content-Transfer-Encoding", "7bit"); try { Transport.send(mimeMsg); } catch (MessagingException e) { throw new RuntimeException(e); } } catch (Exception e) { e.printStackTrace(); } textView.setText("送信完了"); } }