前回作成したテスト MailServiceTest#receive_plainText_UTF8()をパスするように MailService#receive()を実装する。
◎まずはコンパイルエラーをなくすように必要最低限のコードを書いてみる。
public MailItem receive(String pAddress, InputStream pInputStream) { MailItem mailItem = null; return mailItem; }これで、コンパイルは通るのでテストを実行してみる。
結果は...NullPointerExceptionでRed、receive()の戻り値がnullなので当たり前だな。
◎次はテストをパスするようにコードを書く。
public MailItem receive(String pAddress, InputStream pInputStream) { MailItem mailItem = null; Properties prop = new Properties(); Session session = Session.getDefaultInstance(prop, null); try { MimeMessage message = new MimeMessage(session, pInputStream); mailItem = new MailItem(); mailItem.setFrom(message.getFrom()[0].toString()); mailItem.setTo(message.getRecipients(RecipientType.TO)[0].toString()); mailItem.setSubject(message.getSubject()); InputStream in = (InputStream)message.getInputStream(); Reader reader = new InputStreamReader(in); BufferedReader bufReader = new BufferedReader(reader); StringBuilder sb = new StringBuilder(); String line; while ((line = bufReader.readLine()) != null) { sb.append(line + "\n"); } mailItem.setBody(sb.toString()); Datastore.put(mailItem); } catch (MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mailItem; }◎コンパイルは通っているので、テストを実行してみる。もちろんGreen、これで基本パターンはOK (^_^)v
次回は通常のメールと同じように文字コードが"ISO-2022-JP"の場合を考えてみる。
0 件のコメント:
コメントを投稿