{"id":448,"date":"2014-12-18T22:58:49","date_gmt":"2014-12-19T07:58:49","guid":{"rendered":"http:\/\/blog.box.kr\/?p=448"},"modified":"2014-12-18T22:58:49","modified_gmt":"2014-12-19T07:58:49","slug":"%ed%8e%8cjava-mail-%eb%b0%9c%ec%86%a1-gmail-smtp-%ec%9d%b4%ec%9a%a9-example-%ec%98%88%ec%a0%9c","status":"publish","type":"post","link":"https:\/\/blog.box.kr\/?p=448","title":{"rendered":"[\ud38c]Java Mail \ubc1c\uc1a1 (GMail SMTP \uc774\uc6a9) example \uc608\uc81c"},"content":{"rendered":"<p>java mail API\ub97c \uc774\uc6a9\ud558\uc5ec GMail\uc758 SMTP\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc77c\uc744 \ubc1c\uc1a1\ud558\ub294 \uac83\uc5d0 \ub300\ud574 \uc544\uc8fc \uac04\ub7b5\ud558\uac8c \uc54c\uc544\ubcf8\ub2e4.<br \/>\n\uba54\uc77c\uc744 \ubc1c\uc1a1\ud558\uae30 \uc704\ud574\uc11c\ub294 Java Mail API\uc640 GMail \uacc4\uc815\uc774 \ud544\uc694\ud558\ub2e4. (GMail SMTP\ub294 SSL\ub85c \uacc4\uc815 \uc778\uc99d\uc744 \ud574\uc57c \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\ub2e4.)<\/p>\n<p>\ubc1c\uc1a1\ub418\ub294 \uba54\uc77c\uc758 \ud14d\uc2a4\ud2b8\ub294 HTML\uc774\uba70, UTF-8\uc774\ub2e4. Text\ub098 \ub2e4\ub978 \uce90\ub9ad\ud130\uc14b\uc744 \uc6d0\ud55c\ub2e4\uba74 \uc870\uae08 \uc218\uc815\ud558\uba74 \ub41c\ub2e4.<br \/>\n\uae30\ub2a5\uc740 \ucca8\ubd80\ud30c\uc77c\uc774 \uc788\ub294 \uba54\uc77c\uacfc \uc5c6\ub294 \uba54\uc77c\ub9cc \uad6c\ubd84\ud558\uc5ec \uc81c\uacf5\ud55c\ub2e4.<\/p>\n<p><b><strong>import<\/strong><\/b> java.io.File;<\/p>\n<p><b><strong>import<\/strong><\/b> java.util.Date;<\/p>\n<p><b><strong>import<\/strong><\/b> java.util.Properties;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.activation.DataHandler;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.activation.FileDataSource;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.Authenticator;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.Message;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.Multipart;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.PasswordAuthentication;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.Session;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.Transport;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.internet.InternetAddress;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.internet.MimeBodyPart;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.internet.MimeMessage;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.internet.MimeMultipart;<\/p>\n<p><b><strong>import<\/strong><\/b> javax.mail.internet.MimeUtility;<\/p>\n<p>\/**<\/p>\n<p>* &lt;PRE&gt;<\/p>\n<p>* SmtpMailer class<\/p>\n<p>* SMTP\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc77c\uc744 \ubc1c\uc1a1\ud55c\ub2e4.<\/p>\n<p>* &lt;\/PRE&gt;<\/p>\n<p>*<\/p>\n<p>* <b><strong>@author<\/strong><\/b> ukzzang<\/p>\n<p>* <b><strong>@version<\/strong><\/b> v0.8, 2011. 8. 2.<\/p>\n<p>*<\/p>\n<p>* &lt;PRE&gt;<\/p>\n<p>* &#8211; History<\/p>\n<p>* 2011. 8. 2., ukzzang, \ucd5c\ucd08\uc791\uc131.<\/p>\n<p>* &lt;\/PRE&gt;<\/p>\n<p>*\/<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>class<\/strong><\/b> GmailSmtpSender {<\/p>\n<p>\/\/ gmail smtp default info<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>static<\/strong><\/b> <b><strong>final<\/strong><\/b> String <em>DEFAULT_TRANSPORT_PROTOCOLC<\/em> = &#8220;smtp&#8221;;<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>static<\/strong><\/b> String <em>DEFAULT_SMTP_SOCKET_FACTORY_CLASS<\/em> =<br \/>\n&#8220;javax.net.ssl.SSLSocketFactory&#8221;;<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>static<\/strong><\/b> String <em>DEFAULT_SMTP_HOST<\/em> = &#8220;smtp.gmail.com&#8221;;<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>static<\/strong><\/b> <b><strong>int<\/strong><\/b> <em>DEFAULT_SMTP_PORT<\/em> = 465;<\/p>\n<p><b><strong>private<\/strong><\/b> Properties props = <b><strong>null<\/strong><\/b>;<\/p>\n<p>\/**<\/p>\n<p>* constructor<\/p>\n<p>*\/<\/p>\n<p><b><strong>public<\/strong><\/b> GmailSmtpSender() {<\/p>\n<p><b><strong>this<\/strong><\/b>(<em>DEFAULT_SMTP_HOST<\/em>, <em>DEFAULT_SMTP_PORT<\/em>,<\/p>\n<p><em>DEFAULT_SMTP_SOCKET_FACTORY_CLASS<\/em>);<\/p>\n<p>}<\/p>\n<p>\/**<\/p>\n<p>* constructor<\/p>\n<p>*<\/p>\n<p>* <b><strong>@param<\/strong><\/b> host smtp host (domain or ip)<\/p>\n<p>* <b><strong>@param<\/strong><\/b> port smtp port<\/p>\n<p>* <b><strong>@param<\/strong><\/b> socketFactoryClassName smtp socket factory class name<\/p>\n<p>*\/<\/p>\n<p><b><strong>public<\/strong><\/b> GmailSmtpSender(String host, <b><strong>int<\/strong><\/b> port, String socketFactoryClassName)<br \/>\n{<\/p>\n<p>props = <b><strong>new<\/strong><\/b> Properties();<\/p>\n<p>\/\/ \uae30\ubcf8 \ud504\ub85c\ud37c\ud2f0 \uc124\uc815<\/p>\n<p>props.put(&#8220;mail.smtp.starttls.enable&#8221;, &#8220;true&#8221;);<\/p>\n<p>props.put(&#8220;mail.smtp.auth&#8221;, &#8220;true&#8221;);<\/p>\n<p>props.put(&#8220;mail.transport.protocol&#8221;, <em>DEFAULT_TRANSPORT_PROTOCOLC<\/em>);<\/p>\n<p>\/\/ \uc9c0\uc815 \uac00\ub2a5 \ud504\ub85c\ud37c\ud2f0 \uc124\uc815<\/p>\n<p>props.put(&#8220;mail.smtp.host&#8221;, host);<\/p>\n<p>props.setProperty(&#8220;mail.smtp.socketFactory.class&#8221;,<\/p>\n<p>socketFactoryClassName);<\/p>\n<p>props.put(&#8220;mail.smtp.port&#8221;, String.<em>valueOf<\/em>(port));<\/p>\n<p>}<\/p>\n<p>\/**<\/p>\n<p>* SMTP\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc774\uc744 \ubc1c\uc1a1\ud55c\ub2e4. (\uc778\uc99d\uc744 \uc704\ud574 Gmail \uacc4\uc815\uc815\ubcf4\uac00 \ud544\uc694\ud558\uba70, \ucca8\ubd80\ud30c\uc77c \ucc98\ub9ac\ub294 \uc5c6\ub2e4.)<\/p>\n<p>*<\/p>\n<p>* <b><strong>@param<\/strong><\/b> authId \uc778\uc99d \uc544\uc774\ub514<\/p>\n<p>* <b><strong>@param<\/strong><\/b> authPasswd \uc778\uc99d \ud328\uc2a4\uc6cc\ub4dc<\/p>\n<p>* <b><strong>@param<\/strong><\/b> from \ubcf4\ub0b4\ub294 \uc0ac\ub78c \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> fromName \ubcf4\ub0b4\ub294 \uc0ac\ub78c \ud45c\ud604 \uc774\ub984<\/p>\n<p>* <b><strong>@param<\/strong><\/b> to \ubc1b\ub294 \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> cc \ucc38\uc870 \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> bcc \uc228\uc740 \ucc38\uc870 \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> subject \uba54\uc77c \uc81c\ubaa9<\/p>\n<p>* <b><strong>@param<\/strong><\/b> content \uba54\uc77c \ub0b4\uc6a9<\/p>\n<p>* <b><strong>@throws<\/strong><\/b> Exception<\/p>\n<p>*\/<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>void<\/strong><\/b> sendSmtpMail(String authId, String authPasswd, String from,<br \/>\nString fromName, String[] to, String[] cc, String[] bcc,<\/p>\n<p>String subject, String content) <b><strong>throws<\/strong><\/b> Exception {<\/p>\n<p>Message msg = createMessage(authId, authPasswd, from, fromName,<br \/>\nto, cc, bcc, <b><strong>null<\/strong><\/b>); \/\/ create message<\/p>\n<p>\/\/ subject &amp; content<\/p>\n<p>msg.setSubject(subject);<\/p>\n<p>msg.setSentDate(<b><strong>new<\/strong><\/b> Date());<\/p>\n<p>msg.setContent(content, &#8220;text\/html;charset=utf-8&#8221;);<\/p>\n<p>Transport.<em>send<\/em>(msg); \/\/ send mail<\/p>\n<p>}<\/p>\n<p>\/**<\/p>\n<p>* SMTP\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc774\uc744 \ubc1c\uc1a1\ud55c\ub2e4. (\uc778\uc99d\uc744 \uc704\ud574 Gmail \uacc4\uc815\uc815\ubcf4\uac00 \ud544\uc694\ud558\uba70, \ucca8\ubd80\ud30c\uc77c \ucc98\ub9ac\ub294 \uc5c6\ub2e4.)<\/p>\n<p>*<\/p>\n<p>* <b><strong>@param<\/strong><\/b> authId \uc778\uc99d \uc544\uc774\ub514<\/p>\n<p>* <b><strong>@param<\/strong><\/b> authPasswd \uc778\uc99d \ud328\uc2a4\uc6cc\ub4dc<\/p>\n<p>* <b><strong>@param<\/strong><\/b> from \ubcf4\ub0b4\ub294 \uc0ac\ub78c \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> fromName \ubcf4\ub0b4\ub294 \uc0ac\ub78c \ud45c\ud604 \uc774\ub984<\/p>\n<p>* <b><strong>@param<\/strong><\/b> to \ubc1b\ub294 \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> cc \ucc38\uc870 \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> bcc \uc228\uc740 \ucc38\uc870 \uba54\uc77c \uc8fc\uc18c<\/p>\n<p>* <b><strong>@param<\/strong><\/b> subject \uba54\uc77c \uc81c\ubaa9<\/p>\n<p>* <b><strong>@param<\/strong><\/b> content \uba54\uc77c \ub0b4\uc6a9<\/p>\n<p>* <b><strong>@param<\/strong><\/b> attachFiles \ucca8\ubd80\ud30c\uc77c<\/p>\n<p>* <b><strong>@throws<\/strong><\/b> Exception<\/p>\n<p>*\/<\/p>\n<p><b><strong>public<\/strong><\/b> <b><strong>void<\/strong><\/b> sendSmtpMail(String authId, String authPasswd, String from,<\/p>\n<p>String fromName, String[] to, String[] cc, String[] bcc,<\/p>\n<p>String subject, String content, File[] attachFiles)<\/p>\n<p><b><strong>throws<\/strong><\/b> Exception {<\/p>\n<p>Message msg = createMessage(authId, authPasswd, from, fromName, to, cc,<\/p>\n<p>bcc, attachFiles); \/\/ create message<\/p>\n<p>\/\/ subject &amp; content<\/p>\n<p>msg.setSubject(subject);<\/p>\n<p>msg.setSentDate(<b><strong>new<\/strong><\/b> Date());<\/p>\n<p>Object contentObj = msg.getContent();<\/p>\n<p><b><strong>if<\/strong><\/b> (contentObj != <b><strong>null<\/strong><\/b> &amp;&amp; contentObj <b><strong>instanceof<\/strong><\/b> Multipart) {<\/p>\n<p>MimeBodyPart contentPart = <b><strong>new<\/strong><\/b> MimeBodyPart();<\/p>\n<p>contentPart.setText(content);<\/p>\n<p>contentPart.setHeader(&#8220;Content-Type&#8221;, &#8220;text\/html;charset=utf-8&#8221;);<\/p>\n<p>Multipart mPart = (Multipart) contentObj;<\/p>\n<p>mPart.addBodyPart(contentPart);<\/p>\n<p>} <b><strong>else<\/strong><\/b> {<\/p>\n<p>msg.setContent(content, &#8220;text\/html;charset=utf-8&#8221;);<\/p>\n<p>}<\/p>\n<p>Transport.<em>send<\/em>(msg); \/\/ send mail<\/p>\n<p>}<\/p>\n<p>\/\/ \uba54\uc2dc\uc9c0\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p><b><strong>private<\/strong><\/b> Message createMessage(String authId, String authPasswd,<\/p>\n<p>String from, String fromName, String[] to, String[] cc,<\/p>\n<p>String[] bcc, File[] attachFiles) <b><strong>throws<\/strong><\/b> Exception {<\/p>\n<p>GmailSmtpAuthenticator auth = <b><strong>new<\/strong><\/b> GmailSmtpAuthenticator(authId,<\/p>\n<p>authPasswd);<\/p>\n<p>Session mailSession = Session.<em>getDefaultInstance<\/em>(props, auth);<\/p>\n<p>\/\/ create message<\/p>\n<p>Message msg = <b><strong>new<\/strong><\/b> MimeMessage(mailSession);<\/p>\n<p><b><strong>if<\/strong><\/b> (fromName != <b><strong>null<\/strong><\/b>) {<\/p>\n<p>msg.setFrom(<b><strong>new<\/strong><\/b> InternetAddress(from, MimeUtility.<em>encodeText<\/em>(<\/p>\n<p>fromName, &#8220;UTF-8&#8221;, &#8220;B&#8221;)));<\/p>\n<p>} <b><strong>else<\/strong><\/b> {<\/p>\n<p>msg.setFrom(<b><strong>new<\/strong><\/b> InternetAddress(from));<\/p>\n<p>}<\/p>\n<p>\/\/ add to<\/p>\n<p>InternetAddress[] toAddr = <b><strong>null<\/strong><\/b>;<\/p>\n<p><b><strong>if<\/strong><\/b> (to != <b><strong>null<\/strong><\/b>) {<\/p>\n<p>toAddr = <b><strong>new<\/strong><\/b> InternetAddress[to.length];<\/p>\n<p><b><strong>for<\/strong><\/b> (<b><strong>int<\/strong><\/b> i = 0; i &lt; to.length; i++) {<\/p>\n<p>toAddr[i] = <b><strong>new<\/strong><\/b> InternetAddress(to[i]);<\/p>\n<p>}<\/p>\n<p>} <b><strong>else<\/strong><\/b> {<\/p>\n<p>toAddr = <b><strong>new<\/strong><\/b> InternetAddress[1];<\/p>\n<p>toAddr[0] = <b><strong>new<\/strong><\/b> InternetAddress(authId);<\/p>\n<p>}<\/p>\n<p>msg.setRecipients(Message.RecipientType.<em>TO<\/em>, toAddr);<\/p>\n<p>\/\/ add cc (\ucc38\uc870)<\/p>\n<p><b><strong>if<\/strong><\/b> (cc != <b><strong>null<\/strong><\/b>) {<\/p>\n<p>InternetAddress[] ccAddr = <b><strong>new<\/strong><\/b> InternetAddress[cc.length];<\/p>\n<p><b><strong>for<\/strong><\/b> (<b><strong>int<\/strong><\/b> i = 0; i &lt; cc.length; i++) {<\/p>\n<p>ccAddr[i] = <b><strong>new<\/strong><\/b> InternetAddress(cc[i]);<\/p>\n<p>}<\/p>\n<p>msg.setRecipients(Message.RecipientType.<em>CC<\/em>, ccAddr);<\/p>\n<p>}<\/p>\n<p>\/\/ add bcc (\uc228\uc740\ucc38\uc870)<\/p>\n<p><b><strong>if<\/strong><\/b> (bcc != <b><strong>null<\/strong><\/b>) {<\/p>\n<p>InternetAddress[] bccAddr = <b><strong>new<\/strong><\/b> InternetAddress[bcc.length];<\/p>\n<p><b><strong>for<\/strong><\/b> (<b><strong>int<\/strong><\/b> i = 0; i &lt; bcc.length; i++) {<\/p>\n<p>bccAddr[i] = <b><strong>new<\/strong><\/b> InternetAddress(bcc[i]);<\/p>\n<p>}<\/p>\n<p>msg.setRecipients(Message.RecipientType.<em>BCC<\/em>, bccAddr);<\/p>\n<p>}<\/p>\n<p><b><strong>if<\/strong><\/b> (attachFiles != <b><strong>null<\/strong><\/b>) {<\/p>\n<p>\/\/ \ud30c\uc77c \ucca8\ubd80<\/p>\n<p>Multipart multipart = <b><strong>new<\/strong><\/b> MimeMultipart();<\/p>\n<p><b><strong>for<\/strong><\/b> (File attachFile : attachFiles) {<\/p>\n<p><b><strong>if<\/strong><\/b> (attachFile != <b><strong>null<\/strong><\/b> &amp;&amp; attachFile.exists()) {<\/p>\n<p>MimeBodyPart mimeBodyPart = <b><strong>new<\/strong><\/b> MimeBodyPart();<\/p>\n<p>mimeBodyPart.setDataHandler(<b><strong>new<\/strong><\/b> DataHandler(<\/p>\n<p><b><strong>new<\/strong><\/b> FileDataSource(attachFile)));<\/p>\n<p>mimeBodyPart.setFileName(attachFile.getName());<\/p>\n<p>multipart.addBodyPart(mimeBodyPart);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>msg.setContent(multipart);<\/p>\n<p>}<\/p>\n<p><b><strong>return<\/strong><\/b> msg;<\/p>\n<p>}<\/p>\n<p><b><strong>private<\/strong><\/b> <b><strong>static<\/strong><\/b> <b><strong>class<\/strong><\/b> GmailSmtpAuthenticator <b><strong>extends<\/strong><\/b> Authenticator {<\/p>\n<p><b><strong>private<\/strong><\/b> String id = <b><strong>null<\/strong><\/b>;<\/p>\n<p><b><strong>private<\/strong><\/b> String passwd = <b><strong>null<\/strong><\/b>;<\/p>\n<p><b><strong>public<\/strong><\/b> GmailSmtpAuthenticator(String id, String passwd) {<\/p>\n<p><b><strong>this<\/strong><\/b>.id = id;<\/p>\n<p><b><strong>this<\/strong><\/b>.passwd = passwd;<\/p>\n<p>}<\/p>\n<p>@Override<\/p>\n<p><b><strong>protected<\/strong><\/b> PasswordAuthentication getPasswordAuthentication() {<\/p>\n<p><b><strong>return<\/strong><\/b> <b><strong>new<\/strong><\/b> PasswordAuthentication(id, passwd);<\/p>\n<p>}<br \/>\n}<\/p>\n<p>}<\/p>\n<p><b><strong>Java Mail\uc758 mail.jar\uac00 \ud328\uc2a4\uc5d0 \uc7a1\ud600 \uc788\uc5b4\uc57c \ud55c\ub2e4.<\/strong><\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>java mail API\ub97c \uc774\uc6a9\ud558\uc5ec GMail\uc758 SMTP\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc77c\uc744 \ubc1c\uc1a1\ud558\ub294 \uac83\uc5d0 \ub300\ud574 \uc544\uc8fc \uac04\ub7b5\ud558\uac8c \uc54c\uc544\ubcf8\ub2e4. \uba54\uc77c\uc744 \ubc1c\uc1a1\ud558\uae30 \uc704\ud574\uc11c\ub294 Java Mail API\uc640 GMail \uacc4\uc815\uc774 \ud544\uc694\ud558\ub2e4. (GMail SMTP\ub294 SSL\ub85c \uacc4\uc815 \uc778\uc99d\uc744 \ud574\uc57c \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\ub2e4.) \ubc1c\uc1a1\ub418\ub294 \uba54\uc77c\uc758 \ud14d\uc2a4\ud2b8\ub294 HTML\uc774\uba70, UTF-8\uc774\ub2e4. Text\ub098 \ub2e4\ub978 \uce90\ub9ad\ud130\uc14b\uc744 \uc6d0\ud55c\ub2e4\uba74 \uc870\uae08 \uc218\uc815\ud558\uba74 \ub41c\ub2e4. \uae30\ub2a5\uc740 \ucca8\ubd80\ud30c\uc77c\uc774 \uc788\ub294 \uba54\uc77c\uacfc \uc5c6\ub294 \uba54\uc77c\ub9cc \uad6c\ubd84\ud558\uc5ec \uc81c\uacf5\ud55c\ub2e4. import java.io.File; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; 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.internet.MimeUtility; \/** * &lt;PRE&gt; * SmtpMailer class * SMTP\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc77c\uc744 \ubc1c\uc1a1\ud55c\ub2e4. * &lt;\/PRE&gt; * * @author ukzzang * @version v0.8, 2011. 8. 2. * * &lt;PRE&gt; * &#8211; History * 2011. 8. 2., ukzzang, \ucd5c\ucd08\uc791\uc131. * &lt;\/PRE&gt; *\/ public class GmailSmtpSender { \/\/ gmail smtp default info public static final String DEFAULT_TRANSPORT_PROTOCOLC = &#8220;smtp&#8221;; public static String DEFAULT_SMTP_SOCKET_FACTORY_CLASS = &#8220;javax.net.ssl.SSLSocketFactory&#8221;; public static String DEFAULT_SMTP_HOST = &#8220;smtp.gmail.com&#8221;; public static int DEFAULT_SMTP_PORT = 465; private Properties props = null; \/** * constructor *\/ public GmailSmtpSender() { this(DEFAULT_SMTP_HOST, DEFAULT_SMTP_PORT, DEFAULT_SMTP_SOCKET_FACTORY_CLASS); } \/** * constructor * * @param host smtp host (domain or ip) * @param port smtp port * @param socketFactoryClassName smtp socket factory class name *\/ public GmailSmtpSender(String host, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"ngg_post_thumbnail":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[15],"tags":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5q9Zn-7e","jetpack-related-posts":[{"id":450,"url":"https:\/\/blog.box.kr\/?p=450","url_meta":{"origin":448,"position":0},"title":"[\ud38c]Gmail SMTP Server\ub97c \uc774\uc6a9\ud55c \uba54\uc77c\uc804\uc1a1 \uc608\uc81c","date":"2014-12-18","format":false,"excerpt":"Gmail SMTP Server\ub97c \uc774\uc6a9\ud55c \uba54\uc77c\uc804\uc1a1 \uc608\uc81c (\ubb34\ub8cc SMTP & Authentication) http:\/\/unionbaby.tistory.com\/category\/+%20Programer\/*%20java?page=2 + Programer\/* java Gmail, Authentication in JavaMail JavaMail 1.4.1:http:\/\/java.sun.com\/products\/javamail\/downloads\/index.html JAF 1.1.1: http:\/\/java.sun.com\/products\/javabeans\/jaf\/downloads\/index.html \u00a0 Gmail.java import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; import java.io.*; import java.util.*; import java.security.Security; public class Gmail { public static void main(String[] args) { Properties p =\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":444,"url":"https:\/\/blog.box.kr\/?p=444","url_meta":{"origin":448,"position":1},"title":"[\ud38c]JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30","date":"2014-12-18","format":false,"excerpt":"JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30 JDK 1.5 \ubd80\ud130 JVM\uc5d0\ub294 Platform MBeanServer\uac00 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 jvm \ud30c\ub77c\ubbf8\ud130\ub85c\u00a0 Platform MBeanServer\uac00 \ub3d9\uc791\ud558\ub3c4\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \ud504\ub85c\uadf8\ub7a8 \uad6c\ub3d9\uc2dc \ub2e4\uc74c\uacfc \uac19\uc740 jvm \ud30c\ub77c\ubbf8\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud589\ud569\ub2c8\ub2e4. \u00a0 jvm \ud30c\ub77c\ubbf8\ud130: \u00a0 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \uc608\uc81c \uc18c\uc2a4 : \u00a0 import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import\u2026","rel":"","context":"In &quot;jboss&amp;tomcat&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":156,"url":"https:\/\/blog.box.kr\/?p=156","url_meta":{"origin":448,"position":2},"title":"reading text file with utf-8 encoding using java","date":"2014-07-06","format":false,"excerpt":"CASE 1. PrintStream out =newPrintStream(System.out,true,\"UTF-8\"); out.println(str); CASE 2. import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;publicclass test {publicstaticvoid main(String[] args){try{File fileDir =newFile(\"PATH_TO_FILE\");BufferedReader in =newBufferedReader(newInputStreamReader(newFileInputStream(fileDir),\"UTF8\"));String str;while((str = in.readLine())!=null){System.out.println(str);} in.close();}catch(UnsupportedEncodingException e){System.out.println(e.getMessage());}catch(IOException e){System.out.println(e.getMessage());}catch(Exception e){System.out.println(e.getMessage());}} }","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":583,"url":"https:\/\/blog.box.kr\/?p=583","url_meta":{"origin":448,"position":3},"title":"java\ub85c unzip","date":"2015-01-28","format":false,"excerpt":"http:\/\/sourceforge.net\/projects\/jazzlib\/ \u00a0 Java comes with \u201cjava.util.zip\u201d library to perform data compression in ZIp format. The overall concept is quite straightforward. Read file with \u201cFileInputStream\u201d Add the file name to \u201cZipEntry\u201d and output it to \u201cZipOutputStream\u201c 1. Simple ZIP example Read a file \u201cC:\\spy.log\u201d and compress it into a zip file\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":625,"url":"https:\/\/blog.box.kr\/?p=625","url_meta":{"origin":448,"position":4},"title":"[\ud38c]JAVA \ud654\uc77c \uac10\uc2dc \ud504\ub85c\uadf8\ub7a8 \ub9cc\ub4e4\uae30.","date":"2015-03-21","format":false,"excerpt":"\uc77c\uc744 \ud558\ub2e4\ubcf4\uba74 \ud2b9\uc815 \ub514\ub809\ud1a0\ub9ac\ub97c \uac10\uc2dc\ud558\uc5ec \ud2b9\uc815 \uc870\uac74\uc774 \ub418\uba74 \uc874\uc7ac \ud558\ub294 \ud654\uc77c\uc744 \ucc98\ub9ac \ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc774 \ud544\uc694 \ud560\ub54c\uac00 \uc788\ub2e4. \u00a0 \ubcf4\ud1b5\uc740 C\/C++\ub85c \uc791\uc5c5 \ud558\ub294\ub370 \uc5b4\ucc0c\ub2e4 \ubcf4\ub2c8 \ubcf4\uac8c\ub41c \ube14\ub85c\uadf8\uc5d0\uc11c \uc5b4\ub5a4 \ubd84\uc774 JAVA\ub85c \ub9cc\ub4e4\uc5b4 \ub193\uc740\uac8c \uc788\uc5b4\uc11c \uac08\ubb34\ub9ac \ud55c\ub2e4. \u00a0 \u00a0 http:\/\/okky.kr\/article\/272376 \u00a0 Main.java public class Main { \/\/ file moved original public static final\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":544,"url":"https:\/\/blog.box.kr\/?p=544","url_meta":{"origin":448,"position":5},"title":"\ud558\uc774\ubc84\ub124\uc774\ud2b8 \uc0ac\uc6a9\uc2dc\uc5d0 \uc624\ub77c\ud074\uc5d0\uc11c \ub0a0\uc9dc \ud615\uc2dd\uc73c\ub85c \uc870\ud68c\uc2dc\uc5d0 Index \uc548","date":"2015-01-07","format":false,"excerpt":"\ud558\uc774\ubc84\ub124\uc774\ud2b8 \uc0ac\uc6a9\uc2dc\uc5d0 \uc624\ub77c\ud074\uc5d0\uc11c \ub0a0\uc9dc \ud615\uc2dd\uc73c\ub85c \uc870\ud68c\uc2dc\uc5d0 Index \uc548\ud0c0\ub294 \ubb38\uc81c\uac00 \ubc1c\uc0dd.. \u00a0 \ub0b4\uc6a9\uc744 \uc694\uc57d\ud558\uba74.. \ud558\uc774\ubc84\ub124\uc774\ud2b8\uac00 \ub0a0\uc9dc \ud615\uc2dd\uc73c\ub85c \uc778\uc2dd \ubabb\ud558\uace0 \ud30c\ub77c\ubbf8\ud130 \uae30\uc900\uc73c\ub85c \ubb38\uc790 ( \ud544\ub4dc ) \uc640 \ub0a0\uc9dc ( \ud30c\ub77c\ubbf8\ud130)\ub77c \ud310\ub2e8 \ud558\uace0 \ud544\ub4dc\ub97c \ud568\uc218 \uc4b8\uc5b4\uc11c \ub0a0\uc9dc \ud615\uc2dd\uc73c\ub85c \ubcc0\uacbd \ud568.. \uadf8\ub798\uc11c \uc778\ub371\uc2a4 \ubabb \ud0d0.. \uacb0\ub860 \uc801\uc73c\ub85c \ud558\uc774\ubc84 \ub124\uc774\ud2b8\ud55c\ub370 \uc774 \ud544\ub4dc\uac00 \ub0a0\uc9dc \ud615\uc2dd\uc774\ub77c\ub294\uac78 \uc778\uc2dd\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/448"}],"collection":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=448"}],"version-history":[{"count":0,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/448\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}