{"id":2486,"date":"2023-12-19T20:00:03","date_gmt":"2023-12-19T11:00:03","guid":{"rendered":"https:\/\/technologyagency.net\/wordpress\/?p=2486"},"modified":"2024-01-16T19:54:28","modified_gmt":"2024-01-16T10:54:28","slug":"oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84","status":"publish","type":"post","link":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/","title":{"rendered":"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u524d\u63d0\u6761\u4ef6<\/h2>\n\n\n\n<p>Gmail\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Google Cloud\u306e\u8a2d\u5b9a<\/h2>\n\n\n\n<p><a href=\"https:\/\/console.cloud.google.com\/\">https:\/\/console.cloud.google.com\/<\/a>\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"249\" class=\"wp-image-2545\" style=\"width: 500px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png 702w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1-300x149.png 300w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n\n\n\n<p>\u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3092\u4ed8\u3051\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"197\" class=\"wp-image-2546\" style=\"width: 500px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi2.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi2.png 531w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi2-300x118.png 300w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n\n\n\n<p>User Type\u306f\u300c\u5916\u90e8\u300d\u3092\u9078\u629e\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"335\" class=\"wp-image-2547\" style=\"width: 600px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi3.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi3.png 789w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi3-300x168.png 300w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi3-768x429.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n\n\n\n<p>\u30c6\u30b9\u30c8\u7528\u306a\u306e\u3067\u30a2\u30d7\u30ea\u60c5\u5831\u306f\u9069\u5f53\u306b\u5165\u529b\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"1033\" class=\"wp-image-2548\" style=\"width: 500px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi4.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi4.png 527w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi4-145x300.png 145w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi4-496x1024.png 496w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u300c\u8a8d\u8a3c\u60c5\u5831\u300d\u30bf\u30d6\u306e\u300c\u8a8d\u8a3c\u60c5\u5831\u3092\u4f5c\u6210\u300d\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"199\" class=\"wp-image-2549\" style=\"width: 500px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi5.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi5.png 525w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi5-300x119.png 300w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n\n\n\n<p>\u300cOAuth\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\u300d\u3092\u9078\u629e\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"283\" class=\"wp-image-2551\" style=\"width: 500px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi6.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi6.png 518w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi6-300x170.png 300w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7a2e\u985e\u306b\u306f\u300c\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30a2\u30d7\u30ea\u300d\u3092\u9078\u629e\u3059\u308b\u3002\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u3060\u3051\u306a\u306e\u3067\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u304b\u3089Gmail API\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"240\" class=\"wp-image-2553\" style=\"width: 500px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi7.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi7.png 526w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi7-300x144.png 300w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n\n\n\n<p>\u4f5c\u6210\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 ID\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 \u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304c\u767a\u884c\u3055\u308c\u308b\u306e\u3067\u3001\u30e1\u30e2\u3057\u3066\u304a\u304f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4f8b<\/h2>\n\n\n\n<h5 class=\"wp-block-heading\">build.gradle<\/h5>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"plugins {\n\tid 'java'\n}\n\ngroup = 'oauth2gmail'\nversion = '0.0.1-SNAPSHOT'\n\njava {\n\tsourceCompatibility = '17'\n}\n\nconfigurations {\n\tcompileOnly {\n\t\textendsFrom annotationProcessor\n\t}\n}\n\nrepositories {\n\tmavenCentral()\n}\n\ndependencies {\n    implementation 'com.google.api-client:google-api-client:2.2.0'\n    implementation 'com.sun.mail:jakarta.mail:2.0.1'\n}\n\ntasks.named('test') {\n\tuseJUnitPlatform()\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">plugins {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\tid <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">java<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">group <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">oauth2gmail<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">version <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">0.0.1-SNAPSHOT<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">java {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\tsourceCompatibility <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">17<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">configurations {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\tcompileOnly {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t\textendsFrom annotationProcessor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">repositories {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\tmavenCentral<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">dependencies {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    implementation <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">com.google.api-client:google-api-client:2.2.0<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    implementation <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">com.sun.mail:jakarta.mail:2.0.1<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">tasks<\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9FF\">named<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">test<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\tuseJUnitPlatform<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">GmailOAuth.java<\/h5>\n\n\n\n<p>\u30e1\u30e2\u3057\u3066\u304a\u3044\u305f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 ID\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 \u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u3001CLIENT_ID\u3001CLIENT_SECRET\u5909\u6570\u306b\u305d\u308c\u305e\u308c\u8a2d\u5b9a\u3059\u308b\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u51e6\u7406\u306f\u5fc5\u8981\u306a\u3044\u306e\u3067\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8URL\u306b\u306furn:ietf:wg:oauth:2.0:oob\u3092\u8a2d\u5b9a\u3059\u308b\u3002\u3053\u308c\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u305b\u305a\u306b\u76f4\u63a5\u753b\u9762\u306b\u8a8d\u8a3c\u30b3\u30fc\u30c9\u304c\u8868\u793a\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<p>MAIL_FROM\u306bGmail\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3002MAIL_TO\u306b\u306f\u30c6\u30b9\u30c8\u30e1\u30fc\u30eb\u3092\u9001\u3063\u3066\u3082\u5927\u4e08\u592b\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"public class GmailOAuth {\n\n    private static final String SCOPE = &quot;https:\/\/mail.google.com\/&quot;;\n    private static final String CLIENT_ID = &quot;CLIENT_ID&quot;;\n    private static final String CLIENT_SECRET = &quot;CLIENT_SECRET&quot;;\n    private static final String REDIRECT_URI = &quot;urn:ietf:wg:oauth:2.0:oob&quot;;\n    private static final String MAIL_FROM = &quot;sender@foo.bar&quot;;\n    private static final String MAIL_TO = &quot;receiver@foo.bar&quot;;\n\n    public static void main(String[] args) throws IOException, MessagingException {\n        \/\/ \u53d6\u5f97\u3057\u305f\u8a8d\u8a3c\u30b3\u30fc\u30c9\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u3092\u6307\u5b9a\n        var fileDataStoreFactory = new FileDataStoreFactory(new File(System.getProperty(&quot;java.io.tmpdir&quot;)));\n\n        \/\/ OAuth 2.0 \u306e\u8a8d\u8a3c\u30d5\u30ed\u30fc\u3092\u4f5c\u6210\n        var flow = new GoogleAuthorizationCodeFlow.Builder(new NetHttpTransport(),\n                GsonFactory.getDefaultInstance(), CLIENT_ID, CLIENT_SECRET, Set.of(SCOPE))\n                        .setCredentialDataStore(StoredCredential.getDefaultDataStore(fileDataStoreFactory)).build();\n\n        \/\/ \u30a2\u30af\u30bb\u30b9 \u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\n        var credential = flow.loadCredential(&quot;user&quot;);\n\n        \/\/ \u53d6\u5f97\u6e08\u307f\u306e\u8a8d\u8a3c\u60c5\u5831\u304c\u3042\u308b\u304b\u3001\u307e\u305f\u305d\u308c\u306f\u6709\u52b9\u304b\u78ba\u8a8d\n        if (credential == null || (credential.getExpiresInSeconds() &lt; 100 &amp;&amp; !credential.refreshToken())) {\n            \/\/ \u6709\u52b9\u306a\u30b3\u30fc\u30c9\u304c\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u65b0\u305f\u306b\u8a8d\u53ef\u30b3\u30fc\u30c9\u3092\u53d6\u5f97\n            var url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();\n            System.out.println(&quot;Please open the following URL in your browser then type the authorization code:&quot;);\n            System.out.println(&quot;  &quot; + url);\n            System.out.println(&quot;Please enter your authentication code:&quot;);\n\n            try (var s = new Scanner(System.in)) {\n                var code = s.nextLine();\n                var tokenResponse = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute();\n                credential = flow.createAndStoreCredential(tokenResponse, &quot;user&quot;);\n            }\n        }\n\n        \/\/ SMTP \u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\n        var props = new Properties();\n        props.put(&quot;mail.smtp.host&quot;, &quot;smtp.gmail.com&quot;);\n        props.put(&quot;mail.smtp.port&quot;, &quot;587&quot;);\n        props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;);\n        props.put(&quot;mail.smtp.auth.mechanisms&quot;, &quot;XOAUTH2&quot;);\n        props.put(&quot;mail.smtp.starttls.enable&quot;, &quot;true&quot;);\n        var session = Session.getDefaultInstance(props);\n\n        \/\/ \u30e1\u30fc\u30eb\u3092\u4f5c\u6210\n        var message = new MimeMessage(session);\n        message.setFrom(new InternetAddress(MAIL_FROM));\n        message.setRecipient(Message.RecipientType.TO, new InternetAddress(MAIL_TO));\n        message.setSubject(&quot;Gmail \u304b\u3089\u9001\u4fe1\u3057\u305f\u30e1\u30fc\u30eb&quot;);\n        message.setText(&quot;\u3053\u306e\u30e1\u30fc\u30eb\u306f\u3001Gmail \u306e SMTP \u3067 OAuth 2.0 \u8a8d\u8a3c\u3092\u4f7f\u3063\u3066\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002&quot;);\n\n        \/\/ \u30e1\u30fc\u30eb\u3092\u9001\u4fe1\n        var transport = session.getTransport(&quot;smtp&quot;);\n        transport.connect(MAIL_FROM, credential.getAccessToken());\n        transport.sendMessage(message, message.getAllRecipients());\n        transport.close();\n\n        System.out.println(&quot;\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002&quot;);\n    }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">GmailOAuth<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">final<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCOPE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">https:\/\/mail.google.com\/<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">final<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CLIENT_ID<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">CLIENT_ID<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">final<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CLIENT_SECRET<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">CLIENT_SECRET<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">final<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">REDIRECT_URI<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">urn:ietf:wg:oauth:2.0:oob<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">final<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MAIL_FROM<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">sender@foo.bar<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">final<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MAIL_TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">receiver@foo.bar<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">main<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #8FBCBB\">String<\/span><span style=\"color: #ECEFF4\">[]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">args<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">throws<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">IOException<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">MessagingException<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ \u53d6\u5f97\u3057\u305f\u8a8d\u8a3c\u30b3\u30fc\u30c9\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u3092\u6307\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fileDataStoreFactory<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">FileDataStoreFactory<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">File<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">System<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getProperty<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">java.io.tmpdir<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)))<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ OAuth 2.0 \u306e\u8a8d\u8a3c\u30d5\u30ed\u30fc\u3092\u4f5c\u6210<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">flow<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> GoogleAuthorizationCodeFlow<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Builder<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">NetHttpTransport<\/span><span style=\"color: #ECEFF4\">(),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #D8DEE9\">GsonFactory<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getDefaultInstance<\/span><span style=\"color: #ECEFF4\">(),<\/span><span style=\"color: #D8DEE9FF\"> CLIENT_ID<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> CLIENT_SECRET<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Set<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">of<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">SCOPE<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">setCredentialDataStore<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">StoredCredential<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getDefaultDataStore<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">fileDataStoreFactory<\/span><span style=\"color: #ECEFF4\">)).<\/span><span style=\"color: #88C0D0\">build<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ \u30a2\u30af\u30bb\u30b9 \u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">credential<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">flow<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">loadCredential<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">user<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ \u53d6\u5f97\u6e08\u307f\u306e\u8a8d\u8a3c\u60c5\u5831\u304c\u3042\u308b\u304b\u3001\u307e\u305f\u305d\u308c\u306f\u6709\u52b9\u304b\u78ba\u8a8d<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">credential <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">null<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">||<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">credential<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getExpiresInSeconds<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">100<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&amp;&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9\">credential<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">refreshToken<\/span><span style=\"color: #ECEFF4\">()))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ \u6709\u52b9\u306a\u30b3\u30fc\u30c9\u304c\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u65b0\u305f\u306b\u8a8d\u53ef\u30b3\u30fc\u30c9\u3092\u53d6\u5f97<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">url<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">flow<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">newAuthorizationUrl<\/span><span style=\"color: #ECEFF4\">().<\/span><span style=\"color: #88C0D0\">setRedirectUri<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">REDIRECT_URI<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">build<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">System<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">out<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">println<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Please open the following URL in your browser then type the authorization code:<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">System<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">out<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">println<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> url<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">System<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">out<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">println<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Please enter your authentication code:<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Scanner<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">System<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">in<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">code<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">nextLine<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">tokenResponse<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">flow<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">newTokenRequest<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">code<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">setRedirectUri<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">REDIRECT_URI<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">execute<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                credential <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">flow<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">createAndStoreCredential<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">tokenResponse<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">user<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ SMTP \u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u4f5c\u6210<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">props<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Properties<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">props<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">put<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">mail.smtp.host<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">smtp.gmail.com<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">props<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">put<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">mail.smtp.port<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">587<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">props<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">put<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">mail.smtp.auth<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">true<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">props<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">put<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">mail.smtp.auth.mechanisms<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">XOAUTH2<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">props<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">put<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">mail.smtp.starttls.enable<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">true<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">session<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Session<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getDefaultInstance<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">props<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ \u30e1\u30fc\u30eb\u3092\u4f5c\u6210<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">MimeMessage<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">session<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">setFrom<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">InternetAddress<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">MAIL_FROM<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">setRecipient<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">Message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">RecipientType<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">InternetAddress<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">MAIL_TO<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">setSubject<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Gmail \u304b\u3089\u9001\u4fe1\u3057\u305f\u30e1\u30fc\u30eb<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">setText<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\u3053\u306e\u30e1\u30fc\u30eb\u306f\u3001Gmail \u306e SMTP \u3067 OAuth 2.0 \u8a8d\u8a3c\u3092\u4f7f\u3063\u3066\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ \u30e1\u30fc\u30eb\u3092\u9001\u4fe1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">transport<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">session<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getTransport<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">smtp<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">transport<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">connect<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">MAIL_FROM<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">credential<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getAccessToken<\/span><span style=\"color: #ECEFF4\">())<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">transport<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sendMessage<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">message<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">getAllRecipients<\/span><span style=\"color: #ECEFF4\">())<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">transport<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">close<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">System<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">out<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">println<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b9f\u884c<\/h2>\n\n\n\n<p>\u521d\u56de\u5b9f\u884c\u6642\u3001\u4e0b\u8a18\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u3002\u8868\u793a\u3055\u308c\u3066\u3044\u308bURL\u306b\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4ed8\u4e0e\u3059\u308b\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Please open the following URL in your browser then type the authorization code:\n  \u3053\u3053\u306b\u8868\u793a\u3055\u308c\u308bURL\u306b\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\nPlease enter your authentication code:\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">Please<\/span><span style=\"color: #D8DEE9FF\"> open the following URL <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> your browser then type the authorization code<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  \u3053\u3053\u306b\u8868\u793a\u3055\u308c\u308bURL\u306b\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">Please<\/span><span style=\"color: #D8DEE9FF\"> enter your authentication code<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Chrome\u30d6\u30e9\u30a6\u30b6\u3067Gmail\u306b\u30ed\u30b0\u30a4\u30f3\u6e08\u307f\u306e\u72b6\u614b\u3067\u3042\u308c\u3070\u3001\u4e0b\u8a18\u306e\u901a\u308a\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u9078\u629e\u306b\u8868\u793a\u3055\u308c\u308b\u3002\u3082\u3061\u308d\u3093\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u3082\u826f\u3044\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"448\" class=\"wp-image-2560\" style=\"width: 400px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi8.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi8.png 456w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi8-268x300.png 268w\" sizes=\"auto, (max-width: 400px) 85vw, 400px\" \/><\/p>\n\n\n\n<p>\u30c6\u30b9\u30c8\u7528\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u305f\u3081\u3001\u6ce8\u610f\u4e8b\u9805\u304c\u8868\u793a\u3055\u308c\u308b\u304c\u305d\u306e\u307e\u307e\u7d9a\u884c\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"446\" class=\"wp-image-2562\" style=\"width: 400px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi9.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi9.png 458w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi9-269x300.png 269w\" sizes=\"auto, (max-width: 400px) 85vw, 400px\" \/><\/p>\n\n\n\n<p>\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u4ed8\u4e0e\u304c\u9593\u9055\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u3001\u7d9a\u884c\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"695\" class=\"wp-image-2563\" style=\"width: 400px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi10.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi10.png 459w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi10-173x300.png 173w\" sizes=\"auto, (max-width: 400px) 85vw, 400px\" \/><\/p>\n\n\n\n<p>\u8868\u793a\u3055\u308c\u305f\u8a8d\u8a3c\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001\u300cPlease enter your authentication code:\u300d\u306e\u4e0b\u306b\u8cbc\u308a\u4ed8\u3051Enter\u3092\u62bc\u4e0b\u3059\u308b\u3002<br><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"633\" class=\"wp-image-2564\" style=\"width: 400px;\" src=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi11.png\" alt=\"\" srcset=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi11.png 508w, https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi11-190x300.png 190w\" sizes=\"auto, (max-width: 400px) 85vw, 400px\" \/><\/p>\n\n\n\n<p>\u300c\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002\u300d\u3068\u8868\u793a\u3055\u308c\u305f\u3089\u3001\u9001\u4fe1\u5148\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306b\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3055\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3002<\/p>\n\n\n\n<p>\uff12\u56de\u76ee\u4ee5\u964d\u306f\u3001\u8a8d\u8a3c\u30b3\u30fc\u30c9\u306e\u6709\u52b9\u671f\u9650\u5185\u3067\u3042\u308c\u3070\u3001\u4e0a\u8a18\u306e\u624b\u9806\u7121\u3057\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3067\u304d\u308b\u3002\u9006\u306b\u3082\u3046\u4e00\u5ea6\u6700\u521d\u304b\u3089\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u300cSystem.getProperty(&#8220;java.io.tmpdir&#8221;)\u300d\u30d5\u30a9\u30eb\u30c0\u5185\u306e\u300cStoredCredential\u300d\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3059\u308b\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u63d0\u6761\u4ef6 Gmail\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3002 Google Cloud\u306e\u8a2d\u5b9a https:\/\/console.cloud.google.com\/\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3002 \u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3092\u4ed8\u3051\u308b\u3002  &hellip; <a href=\"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[77],"class_list":["post-2486","post","type-post","status-publish","format-standard","hentry","category-java","tag-oauth"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044 - I want to lead an easy life.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0\u3092\u4f7f\u7528\u3057\u3066-gmail\u306esmtp\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044 - I want to lead an easy life.\" \/>\n<meta property=\"og:description\" content=\"\u524d\u63d0\u6761\u4ef6 Gmail\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3002 Google Cloud\u306e\u8a2d\u5b9a https:\/\/console.cloud.google.com\/\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3002 \u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3092\u4ed8\u3051\u308b\u3002 &hellip; &quot;OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044&quot; \u306e\u7d9a\u304d\u3092\u8aad\u3080\" \/>\n<meta property=\"og:url\" content=\"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0\u3092\u4f7f\u7528\u3057\u3066-gmail\u306esmtp\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\/\" \/>\n<meta property=\"og:site_name\" content=\"I want to lead an easy life.\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-19T11:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-16T10:54:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png\" \/>\n<meta name=\"author\" content=\"hide6644\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"hide6644\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/\"},\"author\":{\"name\":\"hide6644\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/#\\\/schema\\\/person\\\/a25355beaa102da2b2d79b00f5865b63\"},\"headline\":\"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\",\"datePublished\":\"2023-12-19T11:00:03+00:00\",\"dateModified\":\"2024-01-16T10:54:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/\"},\"wordCount\":53,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/googleapi1.png\",\"keywords\":[\"OAuth\"],\"articleSection\":[\"Java\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/\",\"url\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/\",\"name\":\"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044 - I want to lead an easy life.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/googleapi1.png\",\"datePublished\":\"2023-12-19T11:00:03+00:00\",\"dateModified\":\"2024-01-16T10:54:28+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/#\\\/schema\\\/person\\\/a25355beaa102da2b2d79b00f5865b63\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#primaryimage\",\"url\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/googleapi1.png\",\"contentUrl\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/googleapi1.png\",\"width\":702,\"height\":349},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/2023\\\/12\\\/19\\\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/\",\"name\":\"I want to lead an easy life.\",\"description\":\"Technical Notes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/#\\\/schema\\\/person\\\/a25355beaa102da2b2d79b00f5865b63\",\"name\":\"hide6644\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a5df48aece572798f5aacd2dd90331e28bd249c13f736badb5116e3d43c5d5e9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a5df48aece572798f5aacd2dd90331e28bd249c13f736badb5116e3d43c5d5e9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a5df48aece572798f5aacd2dd90331e28bd249c13f736badb5116e3d43c5d5e9?s=96&d=mm&r=g\",\"caption\":\"hide6644\"},\"url\":\"https:\\\/\\\/technologyagency.net\\\/wordpress\\\/author\\\/hide6644\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044 - I want to lead an easy life.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0\u3092\u4f7f\u7528\u3057\u3066-gmail\u306esmtp\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\/","og_locale":"ja_JP","og_type":"article","og_title":"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044 - I want to lead an easy life.","og_description":"\u524d\u63d0\u6761\u4ef6 Gmail\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3002 Google Cloud\u306e\u8a2d\u5b9a https:\/\/console.cloud.google.com\/\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3002 \u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3092\u4ed8\u3051\u308b\u3002 &hellip; \"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\" \u306e\u7d9a\u304d\u3092\u8aad\u3080","og_url":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0\u3092\u4f7f\u7528\u3057\u3066-gmail\u306esmtp\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044\/","og_site_name":"I want to lead an easy life.","article_published_time":"2023-12-19T11:00:03+00:00","article_modified_time":"2024-01-16T10:54:28+00:00","og_image":[{"url":"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png","type":"","width":"","height":""}],"author":"hide6644","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"hide6644","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"13\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#article","isPartOf":{"@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/"},"author":{"name":"hide6644","@id":"https:\/\/technologyagency.net\/wordpress\/#\/schema\/person\/a25355beaa102da2b2d79b00f5865b63"},"headline":"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044","datePublished":"2023-12-19T11:00:03+00:00","dateModified":"2024-01-16T10:54:28+00:00","mainEntityOfPage":{"@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/"},"wordCount":53,"commentCount":0,"image":{"@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#primaryimage"},"thumbnailUrl":"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png","keywords":["OAuth"],"articleSection":["Java"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/","url":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/","name":"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044 - I want to lead an easy life.","isPartOf":{"@id":"https:\/\/technologyagency.net\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#primaryimage"},"image":{"@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#primaryimage"},"thumbnailUrl":"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png","datePublished":"2023-12-19T11:00:03+00:00","dateModified":"2024-01-16T10:54:28+00:00","author":{"@id":"https:\/\/technologyagency.net\/wordpress\/#\/schema\/person\/a25355beaa102da2b2d79b00f5865b63"},"breadcrumb":{"@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#primaryimage","url":"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png","contentUrl":"https:\/\/technologyagency.net\/wordpress\/wp-content\/uploads\/2023\/12\/googleapi1.png","width":702,"height":349},{"@type":"BreadcrumbList","@id":"https:\/\/technologyagency.net\/wordpress\/2023\/12\/19\/oauth-2-0%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6-gmail%e3%81%aesmtp%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%81%97%e3%81%9f%e3%81%84\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/technologyagency.net\/wordpress\/"},{"@type":"ListItem","position":2,"name":"OAuth 2.0\u3092\u4f7f\u7528\u3057\u3066 Gmail\u306eSMTP\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u305f\u3044"}]},{"@type":"WebSite","@id":"https:\/\/technologyagency.net\/wordpress\/#website","url":"https:\/\/technologyagency.net\/wordpress\/","name":"I want to lead an easy life.","description":"Technical Notes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/technologyagency.net\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/technologyagency.net\/wordpress\/#\/schema\/person\/a25355beaa102da2b2d79b00f5865b63","name":"hide6644","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/a5df48aece572798f5aacd2dd90331e28bd249c13f736badb5116e3d43c5d5e9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a5df48aece572798f5aacd2dd90331e28bd249c13f736badb5116e3d43c5d5e9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a5df48aece572798f5aacd2dd90331e28bd249c13f736badb5116e3d43c5d5e9?s=96&d=mm&r=g","caption":"hide6644"},"url":"https:\/\/technologyagency.net\/wordpress\/author\/hide6644\/"}]}},"_links":{"self":[{"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/posts\/2486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/comments?post=2486"}],"version-history":[{"count":38,"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/posts\/2486\/revisions"}],"predecessor-version":[{"id":2604,"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/posts\/2486\/revisions\/2604"}],"wp:attachment":[{"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/media?parent=2486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/categories?post=2486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technologyagency.net\/wordpress\/wp-json\/wp\/v2\/tags?post=2486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}