SQLの窓

2018年10月21日


TKMP + imap + C# + PowerShell : メールボックス(階層)の一覧表示

.NET用メール送受信クラスライブラリ (TKMP.DLL)

TKMP : ImapClient Members

TKMP : Mailbox Members

▼ バッチファイル
powershell -NoProfile -ExecutionPolicy Unrestricted .\imap_sub_mailbox.ps1 ユーザ パスワード
imap_sub_mailbox.ps1
$user = $Args[0]
$pass = $Args[1]

$code = @"
using System;
using TKMP.Net;
using TKMP.Reader;
public class MyClass {
	public static void mail_Subbox() {

		ImapClient client = null;

		// 接続準備
		BasicImapLogon logon = new BasicImapLogon("${user}@さくらユーザ.sakura.ne.jp", "${pass}");
		client = new ImapClient(logon, "さくらユーザ.sakura.ne.jp", 993);
		client.AuthenticationProtocol = AuthenticationProtocols.SSL;

		// 接続
		try {
			if (!client.Connect())
			{
				Console.WriteLine("接続できませんでした");
				return;
			}
		}
		catch (Exception ex) {
			Console.WriteLine("接続エラーが発生しました" + ex.Message );
			return;
		}

		// 階層のセパレータ文字列の取得
		Console.WriteLine("Separator : " + client.Separator);

		// デフォルトメールボックスの表示
		Console.WriteLine("FullName : " + client.DefaultMailbox.FullName);

		// Mailbox 一覧 : 実質 INBOX
		Mailbox[] mailbox_list = client.GetMailBox();

		foreach (Mailbox mb in mailbox_list) {

			Console.WriteLine( "ルート : " + mb.FullName);

			// 全て表示
			show_Subbox( mb );

		}

		// 受信終了
		client.Close();

	}

	// ***************************************
	// メールボックス(階層)の一覧表示
	// ***************************************
	public static void show_Subbox( Mailbox mb ) {

		Console.WriteLine( "mailbox : " + mb.FullName );

		if ( (mb.Flags & MailBoxFlags.HasChildren) == MailBoxFlags.HasChildren ) {

			Mailbox[] mailbox_list = mb.SubMailbox;
			foreach (Mailbox mailbox in mailbox_list) {

				show_Subbox( mailbox );

			}
		}

	}
}
"@

$path = "C:\user\ps\TKMPDLL_3.1.8"
Add-Type -Path ("${path}\TKMP.dll")
Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("${path}\TKMP.dll")

[MyClass]::mail_Subbox()


実行結果
Separator : .
FullName : INBOX
ルート : INBOX
mailbox : INBOX
mailbox : INBOX.個人用
mailbox : INBOX.AAA
mailbox : INBOX.spam
mailbox : INBOX.Sent
mailbox : INBOX.TEST
mailbox : INBOX.Trash
mailbox : INBOX.Draft
mailbox : INBOX.Drafts
mailbox : INBOX.最上位のフォルダ
mailbox : INBOX.メールアイテム格納用
mailbox : INBOX.メールアイテム格納用.階層テスト
posted by lightbox at 2018-10-21 11:06 | PowerShell + C# | このブログの読者になる | 更新情報をチェックする
container 終わり

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

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