1. add jar lib
https://code.google.com/archive/p/javamail-android/downloads
2. AndroidStudioでlib用のjarファイルを追加する方法
(1)AndroidViewだったらprojectViewに変更
(2)プロジェクト直下にlibsディレクトリを作成し、jarをいれる
(3)jarを右クリックし、「Add as Library」を選択後、対象プロジェクトを選択しOK
3. AndroidManifest.xmlでインターネットを許可する
AndroidManifest.xml
//この1行を追加
<uses-permission android:name="android.permission.INTERNET" />
4. MainActivityにボタンを1個置いて、OnClickで指定したメソッド(例えばsendMail)に以下を実装
public void sendMail(View view) {
String email = "ほにゃらら@gmail.com";
String password = "上記アカウントのパスワード";
String body = "これがメールの本文になります";
String subject = "これがメールの件名になります";
try {
//email と password更新
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.edit().putString("email", email).commit();
sp.edit().putString("password", password).commit();
//以下メール送信
final Properties property = new Properties();
property.put("mail.smtp.host", "smtp.gmail.com");
property.put("mail.host", "smtp.gmail.com");
property.put("mail.smtp.port", "465");
property.put("mail.smtp.socketFactory.port", "465");
property.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// セッション
final Session session = Session.getInstance(property, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(email, password);
}
});
MimeMessage mimeMsg = new MimeMessage(session);
mimeMsg.setSubject(subject, "utf-8");
mimeMsg.setFrom(new InternetAddress(email));
mimeMsg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(email));
/* 添付ファイルをする場合はこれを使う
final MimeBodyPart txtPart = new MimeBodyPart();
txtPart.setText(body, "utf-8");
final MimeBodyPart filePart = new MimeBodyPart();
File file = new File("[添付ファイルパス]");
FileDataSource fds = new FileDataSource(file);
DataHandler data = new DataHandler(fds);
filePart.setDataHandler(data);
filePart.setFileName(MimeUtility.encodeWord("[メール本文の添付ファイル名]")); */
final Multipart mp = new MimeMultipart();
mp.addBodyPart(txtPart);
//mp.addBodyPart(filePart); //添付ファイルをする場合はこれ
mimeMsg.setContent(mp);
// メール送信する。
final Transport transport = session.getTransport("smtp");
transport.connect(email,password);
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
transport.close();
} catch (MessagingException e) {
System.out.println("exception = " + e);
} /*catch (UnsupportedEncodingException e) {
必要あるのか不明
}*/ finally {
System.out.println("finish sending email");
}
}
5. 補足:MainActivityのOnCreateにこれも書いとかないとエラーが出る
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//以下の2行が必要
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
没有评论:
发表评论