SQLの窓

2020年10月18日


Java11 + Visual Studio Code + JavaMail( with JavaBeans Activation Framework )

Java Extension Pack をインストール後 Java11 へパスを通しています

詳細に JSK の参照を設定するには、Java: Configure Java Runtime で設定画面を表示させます。 JavaMail JavaBeans Activation Framework Java11 で JavaMail を使用するには、JavaBeans Activation Framework を参照する必要があります。しかし Maven を使用すれば、使用する JDK を選択して JavaBeans Activation Framework なしで実行可能です。 Maven を使用する場合は、ダウンロードしてパスを通したうえに、JAVA_HOME に JDK のバスを設定する必要があります。

🔻 Java: Configure Java Runtime

Getting Started with Java in VS Code 参考1) Visual Studio Code で Java + Maven 環境を設定してデバッグ実行する 参考2) VSCodeでMavenプロジェクトをデバッグする
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;

public class Main {

	// *******************************************
	// エントリポイント
	// *******************************************
	public static void main(String[] args) {
		new Main();
	}

	// *******************************************
	// コンストラクタ
	// *******************************************
	public Main() {
		my_acton();
	}

	// *******************************************
	// 初期処理
	// *******************************************
	private void my_acton() {

		// 通常入力用
		Scanner scan = new Scanner(System.in);
		// パスワード入力用
		Console console = System.console();

		MyTool out = new MyTool( ">>>" );
		out.println("処理開始");

		// アカウント入力
		out.println("アカウントの入力");
		String user = scan.nextLine();
		if ( user.equals("") ) {
			out.println( "処理を途中で終了します" );
			return;
		}
		out.println( user );

		// パスワード入力
		char[] pass = console.readPassword( "パスワードを入力してください : " );
		String password = new String( pass );

		// 宛先入力
		out.println("宛先の入力");
		String to = scan.nextLine();
		out.println( to );


		// *******************************************
		// プロパティオブジェクトを作成
		// プロパティオブジェクトは、
		// extends Hashtable(連想配列)
		// *******************************************
		Properties props = new Properties();
	
		// *******************************************
		// ( Gmail では、安全性の低いアプリのアクセスを有効にする必要があります )
		// ▼ G Suite では、安全性の低いアプリのアクセスは使用できません
		// https://gsuiteupdates-ja.googleblog.com/2019/12/g-suite_24.html
		// *******************************************
		props.put("mail.smtp.host","smtp.lolipop.jp");	// ロリポップ
//		props.put("mail.smtp.host","smtp.mail.yahoo.co.jp");	// Yahoo!
//		props.put("mail.smtp.host","smtp.gmail.com");	// Gmail
		
		props.put("mail.smtp.auth", "true" );	// SMTP 認証を行う

		// ▼ 465( SSL )
		props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.socketFactory.fallback", "false");
		props.put("mail.smtp.socketFactory.port", "465");

		// *******************************************
		// メール用のセッションを作成
		// *******************************************
		SimpleAuthenticator sa =
			new SimpleAuthenticator( user , password );
		Session MailSession = 
			Session.getInstance( props, sa );
	
		try {
	
			// *******************************************
			// メール用のメッセージオブジェクトを作成
			// *******************************************
			MimeMessage msg = new MimeMessage(MailSession);
	
			// *******************************************
			// 宛先
			// *******************************************
			msg.setRecipients(
				Message.RecipientType.TO, String.format("%s <%s>",
				MimeUtility.encodeText(
					"あなた",
					"iso-2022-jp",
					"B"
				), to )
			);
	
			// *******************************************
			// 送信者
			// *******************************************
			msg.setFrom(
				new InternetAddress( String.format("%s <%s>",
				MimeUtility.encodeText(
					"わたし",
					"iso-2022-jp",
					"B"
				), user )  )
			);
	
			// *******************************************
			// 件名
			// *******************************************
			msg.setSubject(
				MimeUtility.encodeText(
					"日本語件名",
					"iso-2022-jp",
					"B"
				)
			);
	
			// *******************************************
			// 本文
			// *******************************************
			msg.setContent(
				"本文\r\n本文",
				"text/plain; charset=\"iso-2022-jp\""
			);
	
			// *******************************************
			// 送信
			// *******************************************
			Transport.send( msg );
	
		}
		catch (Exception e) {
			out.println( e.getMessage() );
			out.println("送信エラー");
		}

		out.println("処理終了");

	}

	// *******************************************
	// 内部用クラス
	// *******************************************
	private class MyTool {

		private String mark = null;

		MyTool(String pm) {
			mark = pm;
		}

		public void println(String str) {
			System.out.println( this.mark + str );
		}

	}

	// ***********************************************
	// 認証用のプライベートクラス
	// ***********************************************
	private class SimpleAuthenticator extends Authenticator {
	
		private String user_string = null;
		private String pass_string = null;
	
		public SimpleAuthenticator( String user_s, String pass_s ) {
			super();
			user_string = user_s;
			pass_string = pass_s;
		}
	
		protected PasswordAuthentication getPasswordAuthentication(){
			return new PasswordAuthentication( this.user_string, this.pass_string );
		}
	}

}


JavaMail API documentation

安全性の低いアプリによる G Suite アカウントへの接続が無効に



posted by lightbox at 2020-10-18 16:57 | java : 通信関連 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり