JavaScriptでIMAP経由でメールを取得するスケルトンは以下のようになります。
// IMAPクライアントライブラリをインポート
const ImapClient = require('emailjs-imap-client').default;
// IMAPサーバーの設定
const config = {
host: 'your_imap_host', // IMAPサーバーのホスト名
port: 993, // IMAPサーバーのポート番号 (通常は993)
ssl: true, // SSL/TLSを使用するかどうか
user: 'your_email@example.com', // メールアドレス
password: 'your_password', // パスワード
authMethods: ['XOAUTH2'] // 認証方式
};
// IMAPクライアントのインスタンスを作成
const client = new ImapClient(config.host, config.port, {
useSecureTransport: config.ssl,
auth: {
user: config.user,
pass: config.password,
method: 'XOAUTH2'
}
});
// 接続
async function connect() {
try {
await client.connect();
console.log('IMAPサーバーに接続しました');
await openMailbox('INBOX'); // 受信トレイを開く
} catch (error) {
console.error('接続エラー:', error);
}
}
// メールボックスを開く
async function openMailbox(mailbox) {
try {
await client.selectMailbox(mailbox);
console.log(`${mailbox}を開きました`);
await fetchMessages(); // メッセージを取得
} catch (error) {
console.error('メールボックスを開くエラー:', error);
}
}
// メッセージを取得
async function fetchMessages() {
try {
const messages = await client.listMessages('INBOX', '1:*', ['uid', 'flags', 'envelope']);
console.log(`メッセージ数: ${messages.length}`);
for (const message of messages) {
console.log(`UID: ${message.uid}`);
console.log(`件名: ${message.envelope.subject}`);
// 必要に応じてメッセージの本文を取得する処理を追加
}
await client.close(); // クローズ
} catch (error) {
console.error('メッセージ取得エラー:', error);
}
}
// 実行
connect();
補足:
emailjs-imap-client
は、Node.jsでIMAPクライアントを実装するためのライブラリです。config
オブジェクトには、IMAPサーバーへの接続に必要な情報を設定します。connect()
関数は、IMAPサーバーに接続し、受信トレイを開きます。fetchMessages()
関数は、受信トレイからメッセージを取得し、UIDと件名を表示します。- メッセージの本文を取得するには、
client.fetchData()
メソッドを使用します。 - エラー処理は必要に応じて追加してください。
- 認証方式は、必要に応じて変更してください。
- このスケルトンはあくまで基本的なものであり、実際の使用には、エラー処理、認証方式、メッセージのフィルタリングなど、さまざまなカスタマイズが必要になります。
- XOAUTH2認証を使用する場合は、事前にOAuth 2.0の設定が必要です。
- セキュリティのため、パスワードはハードコードせずに、環境変数などから読み込むようにしてください。
- このコードは、2025/3/28時点での情報に基づいています。ライブラリのバージョンアップなどにより、動作が変わる可能性があります。
参考:
GitHub – emailjs/emailjs-imap-client: Low-level JS IMAP client for all …
node.jsでGmail APIを使ってメール一覧や本文を取得するサンプル
IMAP、POP、SMTP | Gmail | Google for Developers
Node.js・Nodemailerでメールを送信する方法 – ベアメールブログ
JavaScriptでメール送信機能を実装する9つの方法 – Japanシーモア