{"id":159,"date":"2010-03-20T14:14:53","date_gmt":"2010-03-20T05:14:53","guid":{"rendered":"http:\/\/phpdev.comsys-blog.com\/?p=159"},"modified":"2010-03-20T14:14:53","modified_gmt":"2010-03-20T05:14:53","slug":"java-mail%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6%e3%80%81imap-pop3%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b%e3%82%af%e3%83%a9%e3%82%b9%e3%81%a7","status":"publish","type":"post","link":"https:\/\/tamura.jp\/?p=159","title":{"rendered":"JAVA MAIL\u3092\u4f7f\u7528\u3057\u3066\u3001IMAP POP3\u304b\u3089\u30e1\u30fc\u30eb\u3092\u53d6\u5f97\u3059\u308b\u30af\u30e9\u30b9\u3067\u3059"},"content":{"rendered":"<p>\u00a0\u3053\u30532\u5e74\u3070\u304b\u308aPHP\u3092\u3084\u3063\u3066\u304d\u305f\u306e\u3060\u3051\u3069\u3001JAVA\u304c\u3084\u3063\u3071\u308a\u3044\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3001JAVA\u3092\u3084\u308b\u306f\u3081\u306b\u306a\u308a\u307e\u3057\u305f\u3002<br \/>\n\u30d6\u30ed\u30b0\u306e\u30bf\u30a4\u30c8\u30eb\u306f\u300c<span style=\"color: #ff6600\">PHP\u958b\u767a<\/span>\u300d\u3067\u3059\u304c\u3001\u6614\u306b\u623b\u3063\u3066\u3001\u5f53\u5206JAVA\u3092\u3084\u308a\u305d\u3046\u3067\u3059\u3002<br \/>\n\u3088\u308d\u3057\u304f\uff01<\/p>\n<p>\u305d\u3093\u306a\u3053\u3068\u3067\u3001Java\u3000Mail\u3092\u4f7f\u3063\u3066\u30e1\u30fc\u30eb\u30dc\u30c3\u30af\u30b9\u304b\u3089\u30e1\u30fc\u30eb\u3092\u53d6\u5f97\u3059\u308b\u30af\u30e9\u30b9\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n\u3054\u610f\u898b\u3054\u611f\u60f3\u3092\u304a\u5f85\u3061\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre>package jp.compsys.common.util;\n\nimport javax.mail.Flags;\nimport javax.mail.Folder;\nimport javax.mail.Message;\nimport javax.mail.MessagingException;\nimport javax.mail.Multipart;\nimport javax.mail.Part;\nimport javax.mail.Session;\nimport javax.mail.Store;\nimport javax.mail.Address;\nimport javax.mail.Message.RecipientType;\nimport javax.mail.internet.MimeUtility;\n\nimport com.sun.mail.util.QPDecoderStream;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.Serializable;\nimport java.io.UnsupportedEncodingException;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport java.util.Properties;\nimport java.util.ArrayList;\n\n\/**\n * \u30b5\u30fc\u30d0\u304b\u3089\u30e1\u30fc\u30eb\u3092\u53d6\u5f97\u3059\u308b\u30af\u30e9\u30b9.\n *\n * @author Computer System Corp tamura\n * @since 1.6\n * @version 1.0\n * @since 1.0\n *\/\npublic class MailReader implements Serializable\n{\n\tprivate static final long serialVersionUID = -8161055025994457665L;\n\tprivate String server;\n\tprivate String protocol = \"imap\";\n\tprivate int port = 143;\n\tprivate String userId;\n\tprivate String password;\n\n\tprivate int pageNo = 0;\n\tprivate int recordCount = 0;\n\tprivate int maxPageNo = 0;\n\n\tprivate Session session;\n\tprivate Store store;\n\tprivate Folder folder;\n\n\t\/**\n\t * MailReader\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf.\n\t * @param server \t\u63a5\u7d9a\u3059\u308b\u30b5\u30fc\u30d0\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9\n\t * @param port   \t\u63a5\u7d9a\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7\n\t * @param userId\t\u63a5\u7d9a\u3059\u308b\u30e6\u30fc\u30b6ID\n\t * @param password \t\u63a5\u7d9a\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\n\t * @since\t\t\t1.6\n\t *\/\n\tpublic MailReader(String server, int port, String userId, String password)\n\t{\n\t\tthis.server = server;\n\t\tthis.protocol=\"imap\";\n\t\tthis.port = port;\n\t\tthis.userId = userId;\n\t\tthis.password = password;\n\/*\n\t\tthis.protocol=\"pop3\";\n\t\tthis.port = -1;\n*\/\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u306e\u5185\u5bb9\u3092\u53d6\u5f97\u3059\u308b\u3002.\n\t * @param\tmsgnum \u30e1\u30c3\u30bb\u30fc\u30b8\u756a\u53f7\n\t * @return\tMailItem\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8fd4\u3059\u3002\u53d6\u5f97\u3067\u304d\u306a\u3044\u5834\u5408\u306fnull\u3092\u8fd4\u3059\u3002\n\t *\/\n\tpublic MailItem getMail(int msgnum)\n\t{\n\t\tMailItem mailItem = new MailItem();\n\t\tif(!open())\treturn null;\n\t\ttry\n\t\t{\n\t\t\tfolder = store.getFolder(\"INBOX\");\n\t\t\tfolder.open(Folder.READ_ONLY);\n\t\t\tif (!folder.exists())\n\t\t\t{\n\t\t\t\tclose();\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tMessage m = folder.getMessage(msgnum);\n\t\t\tmessageEdit(m, mailItem);\n\t\t\tPart p = m;\n\t\t\tpartSet(p, mailItem);\n\t\t} catch (MessagingException ex)\n\t\t{\n\t\t\tmailItem = null;\n\t\t\tex.printStackTrace();\n\t\t} catch (IOException ex)\n\t\t{\n\t\t\tmailItem = null;\n\t\t\tex.printStackTrace();\n\t\t}\n\t\tclose();\n\t\treturn mailItem;\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u306e\u4e00\u89a7\u3092\u53d6\u5f97(mailList)\u3057\u305f\u5f8c\u306e\u5b9f\u969b\u306e\u53d6\u5f97\u30da\u30fc\u30b8\u756a\u53f7\u3092\u53d6\u5f97\u3059\u308b\u3002\n\t * mailList\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u3067\u306a\u3051\u308c\u3070\u6b63\u3057\u3044\u5024\u3092\u8fd4\u3055\u306a\u3044\u3002.\n\t *\/\n\tpublic int getPageNo()\n\t{\n\t\treturn pageNo;\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u306e\u4e00\u89a7\u3092\u53d6\u5f97(mailList)\u3057\u305f\u6642\u306e\u7dcf\u30e1\u30fc\u30eb\u6570\u3092\u53d6\u5f97\u3059\u308b\u3002\n\t * mailList\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u3067\u306a\u3051\u308c\u3070\u6b63\u3057\u3044\u5024\u3092\u8fd4\u3055\u306a\u3044.\n\t *\/\n\tpublic int getRecordCount()\n\t{\n\t\treturn recordCount;\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u306e\u4e00\u89a7\u3092\u53d6\u5f97(mailList)\u3057\u305f\u6642\u306e\u6700\u5927\u30da\u30fc\u30b8\u6570\u3092\u53d6\u5f97\u3059\u308b\u3002\n\t * mailList\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u3067\u306a\u3051\u308c\u3070\u6b63\u3057\u3044\u5024\u3092\u8fd4\u3055\u306a\u3044.\n\t *\/\n\tpublic int getMaxPageNo()\n\t{\n\t\treturn maxPageNo;\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u306b\u63a5\u7d9a\u3059\u308b\u3002.\n\t * @return\ttrue:\u6210\u529f false:\u5931\u6557\n\t *\/\n\tprivate boolean open()\n\t{\n\t\tProperties properties = System.getProperties();\n\t\tsession = Session.getInstance(properties, null);\n\t\ttry\n\t\t{\n\t\t\tstore = session.getStore(protocol);\n\t\t\tstore.connect(server, port, userId, password);\n\t\t\treturn true;\n\t\t} catch (MessagingException ex)\n\t\t{\n\t\t\tex.printStackTrace();\n\t\t\treturn false;\n\t\t}\n\t}\n\t\/**\n\t * \u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u3068\u306e\u63a5\u7d9a\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\n\t *\/\n\tprivate void close()\n\t{\n\t\tif (null != store)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tstore.close();\n\t\t\t} catch (MessagingException ex)\n\t\t\t{\n\t\t\t}\n\t\t}\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u306b\u542b\u307e\u308c\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u3084\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u3059\u308b\u3002.\n\t *\/\n\t@SuppressWarnings(\"unchecked\")\n\tpublic void partSet(Part p, MailItem m) throws MessagingException, IOException\n\t{\n\t\tMailContent mailContent = new MailContent();\n\t\tString disp = p.getDisposition();\n\t\tif (p.isMimeType(\"multipart\/*\"))\n\t\t{ \/\/ \u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u306e\u5834\u5408\n\t\t\tMultipart mp = (Multipart) p.getContent();\n\t\t\tint count = mp.getCount();\n\t\t\tfor (int i = 0; i &lt; count; i++)\n\t\t\t{\n\t\t\t\tpartSet(mp.getBodyPart(i), m);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\telse if (p.isMimeType(\"message\/rfc822\"))\n\t\t{ \/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5834\u5408\n\t\t\tpartSet((Part) p.getContent(), m);\n\t\t\treturn;\n\t\t}\n\t\telse if (p.isMimeType(\"text\/*\"))\n\t\t{\n\t\t\tif(disp != null &amp;&amp; disp.equalsIgnoreCase(Part.ATTACHMENT))\n\t\t\t{\n\t\t\t\tmailContent.attachmentFlg = true;\n\t\t\t}\n\t\t\tmailContent.header = p.getAllHeaders();\n\t\t\tmailContent.contentType = p.getContentType();\n\t\t\tmailContent.content = content2string(p.getContent());\n\t\t\tm.mailContents.add(mailContent);\n\t\t\treturn;\n\t\t}\n\t\t\/\/ \u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u5408\n\t\tif (disp == null || disp.equalsIgnoreCase(Part.ATTACHMENT))\n\t\t{\n\t\t\tmailContent.contentBinaryFlg = true;\n\t\t\tmailContent.fileName = p.getFileName();\n\t\t\tif (mailContent.fileName != null)\n\t\t\t{\n\t\t\t\tmailContent.fileName = MimeUtility.decodeText(mailContent.fileName);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmailContent.fileName = \"\";\n\t\t\t}\n\t\t\tByteArrayOutputStream os = new ByteArrayOutputStream();\n\t\t\ttry\n\t\t\t{\n\t\t\t\tp.writeTo(os);\n\t\t\t\tmailContent.content_binary = os.toByteArray();\n\t\t\t} catch (IOException e)\n\t\t\t{\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\tmailContent.header = p.getAllHeaders();\n\t\t\tmailContent.contentType = p.getContentType();\n\t\t\tmailContent.attachmentFlg=true;\n\t\t\tm.mailContents.add(mailContent);\n\t\t}\n\t}\n\n\t\/**\n\t * text\/* \u306b\u542b\u307e\u308c\u308b\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u6587\u5b57\u5217\u3068\u3057\u3066\u53d7\u3051\u53d6\u308b.\n\t * @param\ttext\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u5185\u5bb9\n\t *\/\n\tprivate String content2string(Object obj) throws MessagingException\n\t{\n\t\tString ret = \"\";\n\t\tif (obj instanceof String)\n\t\t{\n\t\t\treturn (String) obj;\n\t\t}\n\t\telse if (obj instanceof QPDecoderStream)\n\t\t{\n\t\t\tByteArrayOutputStream os = new ByteArrayOutputStream();\n\t\t\tQPDecoderStream qps = (QPDecoderStream) obj;\n\t\t\twhile (true)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tint c = qps.read();\n\t\t\t\t\tif (c == -1) break;\n\t\t\t\t\tos.write(c);\n\t\t\t\t} catch (IOException ex)\n\t\t\t\t{\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t\tret = os.toString();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new MessagingException(\"text\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30d5\u30a1\u30a4\u30eb\u306b\u672a\u5b9a\u7fa9\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\");\n\t\t}\n\t\treturn ret;\n\t}\n\n\t\/**\n\t * \u30e1\u30fc\u30eb\u306e\u4e00\u89a7\u3092\u307a\u30b8\u5358\u4f4d\u306b\u53d6\u5f97\u3057\u307e\u3059\u3002\n\t * @param lineCount\t1\u30da\u30fc\u30b8\u3042\u305f\u308a\u306e\u884c\u6570\n\t * @param pageNo    \u53d6\u5f97\u3057\u305f\u3044\u30da\u30fc\u30b8\n\t * @return\t\u53d6\u5f97\u3057\u305f\u30e1\u30fc\u30eb\u306e\u4e00\u89a7\u3092\u8fd4\u3057\u307e\u3059\u3002\u30e1\u30fc\u30eb\u304c\u306a\u3044\u5834\u5408\u306fnull\u3092\u8fd4\u3057\u307e\u3059\u3002\n\t *\/\n\tpublic ArrayList mailList(int lineCount, int pageNo)\n\t{\n\t\tthis.pageNo = pageNo;\n\t\trecordCount = 0;\n\t\tmaxPageNo = 0;\n\t\tArrayList list = null;\n\t\topen();\n\t\tint start = 0;\n\t\tint end = 0;\n\t\tint cnt = 0;\n\t\ttry\n\t\t{\n\t\t\tfolder = store.getFolder(\"INBOX\");\n\t\t\tif (!folder.exists())\n\t\t\t{\n\t\t\t\tclose();\n\t\t\t\treturn list;\n\t\t\t}\n\t\t\tfolder.open(Folder.READ_ONLY);\n\t\t\tcnt = folder.getMessageCount();\n\t\t\tif (0 == cnt)\n\t\t\t{\n\t\t\t\tclose();\n\t\t\t\treturn list;\n\t\t\t}\n\t\t\trecordCount = cnt;\n\t\t\tmaxPageNo = (int) Math.ceil((double) cnt \/ (double) lineCount);\n\t\t\tif (this.pageNo  maxPageNo) this.pageNo = maxPageNo;\n\t\t\tlist = new ArrayList(cnt);\n\t\t\tMessage mes[] = folder.getMessages();\n\t\t\tfor (Message m : mes)\n\t\t\t{\n\t\t\t\tMailItem mailItem = new MailItem();\n\t\t\t\tmessageEdit(m, mailItem);\n\/\/\t\t\t\t\u4e00\u89a7\u306b\u30e1\u30fc\u30eb\u306e\u5185\u5bb9\u3082\u53d6\u5f97\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u3092\u306f\u305a\u3059 \u304b\u306a\u308a\u9045\u304f\u306a\u308b\u306e\u3067\u3084\u3081\u305f\u307b\u3046\u304c\u3044\u3044\u3067\u3059\u3002\n\/*  \t\t\tPart p = m;\n\t\t\t\tpartSet(p, mailItem);\n*\/\t\t\t\tlist.add(mailItem);\n\t\t\t}\n\t\t\tfolder.close(false);\n\t\t} catch (MessagingException ex)\n\t\t{\n\t\t\tex.printStackTrace();\n\t\t} catch (Exception e)\n\t\t{\n\t\t\te.printStackTrace();\n\t\t} finally\n\t\t{\n\t\t}\n\t\tclose();\n\t\tCollections.sort(list, new Comparator()\n\t\t{\n\t\t\tpublic int compare(MailItem o1, MailItem o2)\n\t\t\t{\n\t\t\t\treturn (o1.sentDate.compareTo(o2.sentDate) * (-1));\n\t\t\t}\n\t\t});\n\t\tstart = (this.pageNo - 1) * lineCount;\n\t\tif (this.pageNo == maxPageNo)\n\t\t{\n\t\t\tend = start + ((cnt - 1) % lineCount);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tend = start + lineCount - 1;\n\t\t}\n\t\tint i = -1;\n\t\tArrayList retList = new ArrayList(end - start + 1);\n\t\tfor (MailItem m : list)\n\t\t{\n\t\t\ti++;\n\t\t\tif (i  end) break;\n\t\t\tretList.add(m);\n\t\t}\n\t\treturn retList;\n\t}\n\n\t\/**\n\t * \u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u542b\u307e\u308c\u308b\u30d8\u30c0\u30fc\u60c5\u5831\u3092\u53d6\u5f97\u7de8\u96c6\u3059\u308b\u3002\n\t * @param m javax.mail.Message\n\t * @param mailItem \u7de8\u96c6\u5bfe\u8c61\n\t *\/\n\tprivate void messageEdit(Message m, MailItem mailItem)\n\t{\n\t\ttry\n\t\t{\n\t\t\tmailItem.messageNo = m.getMessageNumber();\n\t\t\tmailItem.sentDate = m.getSentDate();\n\t\t\tmailItem.receivedDate = m.getReceivedDate();\n\t\t\tmailItem.subject = m.getSubject();\n\t\t\tFlags flags = m.getFlags();\n\t\t\tString[] userFlg = flags.getUserFlags();\n\t\t\t{\n\t\t\t\tif (m.isSet(Flags.Flag.ANSWERED))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"ANSWERED\");\n\t\t\t\t}\n\t\t\t\tif (m.isSet(Flags.Flag.DELETED))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"DELETED\");\n\t\t\t\t}\n\t\t\t\tif (m.isSet(Flags.Flag.DRAFT))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"DRAFT\");\n\t\t\t\t}\n\t\t\t\tif (m.isSet(Flags.Flag.FLAGGED))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"FLAGGED\");\n\t\t\t\t}\n\t\t\t\tif (m.isSet(Flags.Flag.RECENT))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"RECENT\");\n\t\t\t\t}\n\t\t\t\tif (m.isSet(Flags.Flag.SEEN))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"SEEN\");\n\t\t\t\t}\n\t\t\t\tif (m.isSet(Flags.Flag.USER))\n\t\t\t\t{\n\t\t\t\t\tmailItem.systemFlg.add(\"USER\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (null != userFlg)\n\t\t\t{\n\t\t\t\tfor (int i = 0; i &lt; userFlg.length; i++)\n\t\t\t\t{\n\t\t\t\t\tmailItem.userFlg.add(userFlg[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (null != m.getFrom())\n\t\t\t{\n\t\t\t\tfor (Address a : m.getFrom())\n\t\t\t\t{\n\t\t\t\t\tmailItem.from.add(MimeUtility.decodeText(a.toString()));\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tif (null != m.getReplyTo())\n\t\t\t{\n\t\t\t\tfor (Address a : m.getReplyTo())\n\t\t\t\t{\n\t\t\t\t\tmailItem.replyTo.add(MimeUtility.decodeText(a.toString()));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (null != m.getRecipients(RecipientType.TO))\n\t\t\t{\n\t\t\t\tfor (Address a : m.getRecipients(RecipientType.TO))\n\t\t\t\t{\n\t\t\t\t\tmailItem.to.add(MimeUtility.decodeText(a.toString()));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (null != m.getRecipients(RecipientType.CC))\n\t\t\t{\n\t\t\t\tfor (Address a : m.getRecipients(RecipientType.CC))\n\t\t\t\t{\n\t\t\t\t\tmailItem.cc.add(MimeUtility.decodeText(a.toString()));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (null != m.getRecipients(RecipientType.BCC))\n\t\t\t{\n\t\t\t\tfor (Address a : m.getRecipients(RecipientType.BCC))\n\t\t\t\t{\n\t\t\t\t\tmailItem.bcc.add(MimeUtility.decodeText(a.toString()));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (UnsupportedEncodingException ex)\n\t\t{\n\t\t\tex.printStackTrace();\n\t\t} catch (MessagingException ex)\n\t\t{\n\t\t\tex.printStackTrace();\n\t\t} finally\n\t\t{\n\t\t}\n\n\t}\n\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0\u3053\u30532\u5e74\u3070\u304b\u308aPHP\u3092\u3084\u3063\u3066\u304d\u305f\u306e\u3060\u3051\u3069\u3001JAVA\u304c\u3084\u3063\u3071\u308a\u3044\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3001JAVA\u3092\u3084\u308b\u306f\u3081\u306b\u306a\u308a\u307e\u3057\u305f\u3002 \u30d6\u30ed\u30b0\u306e\u30bf\u30a4\u30c8\u30eb\u306f\u300cPHP\u958b\u767a\u300d\u3067\u3059\u304c\u3001\u6614\u306b\u623b\u3063\u3066\u3001\u5f53\u5206JAVA\u3092\u3084\u308a\u305d\u3046\u3067\u3059\u3002 \u3088\u308d\u3057\u304f\uff01 \u305d\u3093\u306a\u3053\u3068\u3067 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-159","post","type-post","status-publish","format-standard","hentry","category-java-mail"],"_links":{"self":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts\/159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=159"}],"version-history":[{"count":0,"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts\/159\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}