send-email について
send-emailは、PythonとSMTPを使ったメール送信の手順を案内するスキルです。メール情報やプロバイダーの認証情報の収集から送信確認までを扱い、テキスト、HTML、Markdown変換、添付ファイル、変数置換テンプレートに対応します。
主な機能
- 01対応プロバイダーと独自SMTPでの送信
- 02テキストおよびHTMLメール
- 03MarkdownからHTMLへの自動変換
- 04複数ファイルの添付
- 05変数置換付きテンプレート
- 06対話形式での情報収集と送信確認
活用シーン
- 01書式付きレポートのメール送信
- 02複数ファイルを添付したメールの送信
- 03HTMLテンプレートを使った通知の作成
- 04メールプロバイダーのSMTP認証情報の設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wangyendt/ wayne-skills --skill send-emailインストール後、Claude Code で/send-emailを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
requirements.txtassets/report-summary.htmlsimple-notification.htmlreferences/smtp-servers.mdscripts/send_email.py詳細
メールを送信
Python を使用して SMTP 経由でメールを送信します。プレーンテキスト、HTML 形式、ファイル添付、テンプレートベースのメールに対応しています。
主な機能
- デフォルトの送信元メールアドレス:送信元が指定されていない場合、
[email protected]を自動的に使用します - Markdown から HTML への自動変換:Markdown コンテンツを検出し、美しくスタイル設定された HTML に変換します
- 複数のメールプロバイダー:Gmail、Outlook、QQ Mail、163/126 Mail、カスタム SMTP に対応しています
- ファイル添付:メールに複数のファイルを添付できます
- メールテンプレート:変数置換に対応したテンプレートファイルを使用できます
メール送信の対話フロー
このスキルでは、メール送信の手順を段階的に案内します。
ステップ 1:メールの基本情報を収集する
必要な情報をユーザーに尋ねます。不足している情報があれば、ユーザーに提示を求めます。
| 情報 | 説明 | 例 |
|---|---|---|
宛先 (--to) | 送信先のメールアドレス | [email protected] |
件名 (--subject) | メールの件名 | Monthly Report |
内容 (--content) | メール本文のテキストまたは HTML | Hello, here is your report. |
重要 — デフォルトの送信元メールアドレスの動作:
ユーザーが最初のリクエストで送信元メールアドレスを指定していない場合は、デフォルトの送信元として [email protected] を自動的に使用してください。どのメールアドレスから送信するかをユーザーに尋ねないでください。
ユーザーが自分のメールアドレスを使用したいと明示した場合に限り、別の送信元メールアドレスを尋ねてください。
デフォルトの [email protected] を使用する場合は、ステップ 2 に進み、126 メールの認証コードを尋ねてください。
ステップ 2:メールプロバイダーを特定し、認証情報を収集する
送信元のメールアドレスのドメインに基づいてメールプロバイダーを特定し、適切な認証情報を求めます。
メールプロバイダーの検出
@gmail.com, @googlemail.com → Gmail
@outlook.com, @hotmail.com, @live.com, @office365.com → Outlook/Office 365
@qq.com, @vip.qq.com → QQ Mail
@163.com, @126.com → NetEase Mail
@aliyun.com, @aliyun-inc.com → Aliyun Mail
@sendgrid.net, @*.sendgrid.net → SendGrid
@*.mailgun.org → Mailgun
Other domains → Custom SMTP (ask for server, port, username, password)
プロバイダー別の認証情報要件
Gmail(@gmail.com、@googlemail.com)
- パスワードの種類:アプリパスワード(アカウントのパスワードではありません)
- 前提条件:2 要素認証(2FA)を有効にする必要があります
- アプリパスワードの取得方法:
- https://myaccount.google.com/apppasswords にアクセスします
- Google アカウントにログインします
- 「Mail」と「Other (Custom name)」を選択し、「SMTP Script」のような名前を入力します
- 「Generate」をクリックし、16 文字のパスワードをコピーします
- SMTP サーバー:
smtp.gmail.com - ポート:
587(TLS)または465(SSL) - ユーザー名:Gmail アドレス全体
Outlook / Office 365(@outlook.com、@hotmail.com、@live.com、@office365.com)
- パスワードの種類:アカウントのパスワード(Web ログインと同じ)
- SMTP サーバー:
smtp.office365.com - ポート:
587(TLS) - ユーザー名:Outlook / Office 365 のメールアドレス全体
QQ Mail(@qq.com、@vip.qq.com)
- パスワードの種類:SMTP 認証コード(アカウントのパスワードではありません)
- 認証コードの取得方法:
- https://mail.qq.com で QQ Mail にログインします
- 「Settings」(设置)→「Account」(账户)をクリックします
- 「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV Service」を探します
- 「POP3/SMTP Service」または「IMAP/SMTP Service」を開きます
- 「Generate Authorization Code」(生成授权码)をクリックします
- SMS で本人確認を行い、生成されたコードをコピーします
- SMTP サーバー:
smtp.qq.com - ポート:
587(TLS)または465(SSL) - ユーザー名:QQ のメールアドレス全体
NetEase 163 Mail(@163.com)
- パスワードの種類:SMTP 認証コード(アカウントのパスワードではありません)
- 認証コードの取得方法:
- https://mail.163.com で 163 Mail にログインします
- 「Settings」(设置)→「POP3/SMTP/IMAP」をクリックします
- 「IMAP/SMTP Service」の横にある「Open」をクリックします
- 本人確認を行い、「Get Authorization Code」(获取授权码)をクリックします
- 16 文字の認証コードをコピーします
- SMTP サーバー:
smtp.163.com - ポート:
465(SSL)または994(IMAP) - ユーザー名:163 のメールアドレス全体
NetEase 126 Mail(@126.com)
- パスワードの種類:SMTP 認証コード(アカウントのパスワードではありません)
- 認証コードの取得方法:
- https://mail.126.com で 126 Mail にログインします
- 「Settings」(设置)→「POP3/SMTP/IMAP」をクリックします
- 「IMAP/SMTP Service」を有効にします
- 表示された認証パスワードをコピーします
- SMTP サーバー:
smtp.126.com - ポート:
465(SSL)または25(SSL) - ユーザー名:126 のメールアドレス全体
SendGrid
- パスワードの種類:API キー(パスワードとして使用)
- API キーの取得方法:
- https://app.sendgrid.com で SendGrid にログインします
- Settings → API Keys に移動します
- 「Create API Key」をクリックします
- 権限を設定し、「Create & View」をクリックします
- API キーをコピーします(表示されるのは一度だけです)
- SMTP サーバー:
smtp.sendgrid.net - ポート:
587(TLS)または465(SSL) - ユーザー名:
apikey(この文字列をそのまま指定します)
Mailgun
- パスワードの種類:ダッシュボードで確認できる SMTP 認証情報
- 認証情報の取得方法:
- https://app.mailgun.com で Mailgun にログインします
- Sending → Domains に移動します
- ドメインを選択します
- ページに表示された SMTP ユーザー名とパスワードをコピーします
- SMTP サーバー:
smtp.mailgun.org - ポート:
587(TLS) - ユーザー名:Mailgun ダッシュボードに表示されたもの
カスタム SMTP(その他のドメイン) ユーザーに以下の情報を尋ねます:
- SMTP サーバーアドレス
- SMTP ポート
- ユーザー名
- パスワード
ステップ 3:Markdown コンテンツを自動検出して処理する
スクリプトは、一般的なパターンを確認して、メールの内容が Markdown 形式かどうかを自動的に検出します:
- 見出し(
#、##、###) - 太字/斜体のテキスト(
**bold**、*italic*) - リスト(
- itemまたは1. item) - コードブロック(```)
- リンク(
[text](url))
Markdown が検出されると、以下の特徴を備えた美しくスタイル設定された HTML に内容が自動変換されます:
- プロフェッショナルなタイポグラフィと余白
- 色分けされた見出し
- スタイル設定されたテーブルとコードブロック
- メールクライアントに合わせたレスポンシブデザイン
Markdown コンテンツに対して --content-type html を手動で指定する必要はありません。自動的に処理されます!
ステップ 4:必要に応じて任意の情報を収集する
--from-name:送信者の表示名(例:「John Doe」)--content-type html:HTML 形式のメールに使用します(デフォルトはプレーンテキストですが、Markdown は自動的に変換されます)--attach:添付するファイルのパス(複数指定できます)--template:本文の代わりにテンプレートファイルを使用します--template-vars:テンプレート変数を指定する JSON 文字列
ステップ 5:確認して送信する
送信する前に、ユーザーに確認します。
Ready to send:
From: [Sender Email]
To: [Recipient Email]
Subject: [Subject]
Content Type: [Plain/HTML]
Attachments: [List of attachments or None]
Proceed to send? (y/n)
確認が取れたら、収集したすべてのパラメーターを指定して send_email.py スクリプトを実行します。
会話の例
例 1:Gmail の基本的なメール
ユーザー:[email protected] に件名「Hello」のメールを送信して
スキル:メールの送信をお手伝いします。いくつか詳細を教えてください。
- 本文:メール本文には何を書きますか?
- 送信元のメールアドレス:どのメールアドレスから送信しますか?
ユーザー:本文は「Hi John, just saying hello!」で、[email protected] から送信して
スキル:Gmail をお使いのようです。Gmail では、通常のパスワードではなくアプリパスワードが必要です。
アプリパスワードを取得するには:
- https://myaccount.google.com/apppasswords にアクセスします
- サインインして「メール」用のアプリパスワードを作成します
- 16 文字のパスワードをコピーします
Gmail のアプリパスワードを入力してください:
ユーザー:abcd efgh ijkl mnop
スキル:送信の準備ができました:
- 差出人:[email protected]
- 宛先:[email protected]
- 件名:Hello
- 本文:Hi John, just saying hello!
送信しますか?(y/n)
例 2:デフォルトの差出人を使った Markdown の本文
ユーザー:[email protected] に、件名「AR グラス業界分析」、本文は[ユーザーが提供した Markdown レポート]でメールを送信して
スキル:メールの送信をお手伝いします。差出人のメールアドレスが指定されていないため、デフォルトのメールアドレス [email protected] を使って送信します。
また、本文が Markdown 形式であることを確認しました。レポートを読みやすくするため、美しい HTML 形式に自動変換します。
126 メールから送信するには、SMTP 認証コードが必要です。
認証コードの取得手順:
- 126 メールにログイン → 設定 → POP3/SMTP/IMAP
- 「IMAP/SMTP サービス」を有効にします
- 表示された認証パスワードをコピーします
[email protected] の認証コードを入力してください:
ユーザー:[認証コードを入力]
スキル:メールを送信する準備ができました:
- 差出人:[email protected]
- 宛先:[email protected]
- 件名:AR グラス業界分析
- 形式:Markdown → HTML(自動変換)
- 本文のプレビュー:見出し、リスト、表などの書式付きコンテンツが含まれます
送信を確認しますか?(y/n)
例 3:本文が不足している場合にデフォルトの差出人を使用する
ユーザー:[email protected] に、件名「プロジェクトレポート」でメールを送って
スキル:メールの本文を確認する必要があります。
メール本文には何を書きますか?
ユーザー:プロジェクトは完了し、すべてのマイルストーンを達成しました。
スキル:デフォルトのメールアドレス [email protected] を使って送信します。
126 メールから送信するには、SMTP 認証コードが必要です。
認証コードの取得手順:
- 126 メールにログイン → 設定 → POP3/SMTP/IMAP
- 「IMAP/SMTP サービス」を有効にします
- 表示された認証パスワードをコピーします
[email protected] の認証コードを入力してください:
ユーザー:[認証コードを入力]
スキル:メールを送信する準備ができました:
- 差出人:[email protected]
- 宛先:[email protected]
- 件名:プロジェクトレポート
- 本文:プロジェクトは完了し、すべてのマイルストーンを達成しました。
送信を確認しますか?(y/n)
例 4:ユーザーが任意の差出人メールアドレスを指定する
ユーザー:/home/user/q4_report.pdf を添付して、[email protected] から [email protected] に第 4 四半期の業績レポートを送信して
スキル:メールの送信をお手伝いします。メールの本文を入力してください。
第 4 四半期の業績について、メールには何を書きますか?
ユーザー:第 4 四半期の財務レポートを添付しました。ご不明な点があればお知らせください。
スキル:Outlook をお使いのようです。Outlook アカウントのパスワード(Web ログインと同じもの)が必要です。
Outlook のパスワードを入力してください:
ユーザー:mypassword123
スキル:送信の準備ができました:
- 差出人:[email protected]
- 宛先:[email protected]
- 件名:第 4 四半期の業績
- 本文:第 4 四半期の財務レポートを添付しました。ご不明な点があればお知らせください。
- 添付ファイル:/home/user/q4_report.pdf
送信しますか?(y/n)
例 5:カスタム SMTP
ユーザー: [email protected] から [email protected] にメールを送信してください
スキル: いくつか情報を確認させてください。
- 件名: メールの件名を教えてください。
- 内容: メール本文を教えてください。
ユーザー: 件名は Test Email、内容は Hello World です
スキル: カスタムドメイン([email protected])を使用しているため、SMTP の設定が必要です。
- SMTP サーバー: SMTP サーバーのアドレスを教えてください。
- SMTP ポート: 使用するポートを教えてください。
- ユーザー名: SMTP のユーザー名を教えてください。
- パスワード: SMTP のパスワードを教えてください。
ユーザー: サーバーは smtp.mydomain.com、ポートは 587、ユーザー名は [email protected]、パスワードは secret です
スキル: 送信する準備ができました。
- 差出人: [email protected]
- 宛先: [email protected]
- 件名: Test Email
- 内容: Hello World
- SMTP サーバー: smtp.mydomain.com:587
送信しますか?(y/n)
スクリプトコマンドのリファレンス
すべての情報を収集したら、適切なパラメーターを指定してスクリプトを実行します。
基本コマンド
python3 scripts/send_email.py \
--to [email protected] \
--subject "Email Subject" \
--content "Email body content" \
--smtp-server smtp.gmail.com \
--smtp-port 587 \
--username [email protected] \
--password your-password-or-app-password
HTML メール
python3 scripts/send_email.py \
--to [email protected] \
--subject "Email Subject" \
--content "<h1>Hello</h1><p>HTML content</p>" \
--content-type html \
--smtp-server smtp.gmail.com \
--smtp-port 587 \
--username [email protected] \
--password your-password
添付ファイル付きメール
python3 scripts/send_email.py \
--to [email protected] \
--subject "Email Subject" \
--content "Email body" \
--attach /path/to/file1.pdf \
--attach /path/to/file2.csv \
--smtp-server smtp.gmail.com \
--smtp-port 587 \
--username [email protected] \
--password your-password
テンプレートを使用したメール
python3 scripts/send_email.py \
--to [email protected] \
--subject "Email Subject" \
--template assets/simple-notification.html \
--template-vars '{"title":"Notification","message":"Your report is ready!"}' \
--content-type html \
--smtp-server smtp.gmail.com \
--smtp-port 587 \
--username [email protected] \
--password your-password
SSL 接続(TLS の代わり)
python3 scripts/send_email.py \
--to [email protected] \
--subject "Email Subject" \
--content "Email body" \
--smtp-server smtp.gmail.com \
--smtp-port 465 \
--use-ssl \
--username [email protected] \
--password your-password
SMTP サーバー設定のリファレンス
| プロバイダー | SMTP サーバー | ポート | 暗号化方式 | パスワードの種類 | ユーザー名 |
|---|---|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | TLS | アプリパスワード | メールアドレス全体 |
| Gmail | smtp.gmail.com | 465 | SSL | アプリパスワード | メールアドレス全体 |
| Outlook | smtp.office365.com | 587 | TLS | アカウントのパスワード | メールアドレス全体 |
| QQ Mail | smtp.qq.com | 587 | TLS | 認証コード | メールアドレス全体 |
| QQ Mail | smtp.qq.com | 465 | SSL | 認証コード | メールアドレス全体 |
| 163 Mail | smtp.163.com | 465 | SSL | 認証コード | メールアドレス全体 |
| 163 Mail | smtp.163.com | 994 | SSL | 認証コード | メールアドレス全体 |
| 126 Mail | smtp.126.com | 465 | SSL | 認証コード | メールアドレス全体 |
| 126 Mail | smtp.126.com | 25 | SSL | 認証コード | メールアドレス全体 |
| SendGrid | smtp.sendgrid.net | 587 | TLS | API キー | apikey |
| SendGrid | smtp.sendgrid.net | 465 | SSL | API キー | apikey |
| Mailgun | smtp.mailgun.org | 587 | TLS | SMTP パスワード | ダッシュボードから |
インストール
このスキルを使用する前に、必要な Python 依存関係をインストールします。
pip install -r requirements.txt
これにより、自動で Markdown を HTML に変換するために必要な markdown ライブラリ(バージョン ≥3.4.0)がインストールされます。
リソース
scripts/send_email.py
メールを送信するためのメインの Python スクリプトです。以下をサポートしています。
- プレーンテキストと HTML のコンテンツ
- 複数のファイル添付
- 変数置換に対応したメールテンプレート
- TLS および SSL 暗号化
- カスタムの差出人名
references/smtp-servers.md
Gmail、Outlook、126、QQ、163、SendGrid、Mailgun、Aliyun を含む、一般的な SMTP サーバーの設定です。
assets/
メールテンプレート:
simple-notification.html- 基本的な通知テンプレートreport-summary.html- 指標グリッドを含む、プロフェッショナルなレポート用テンプレート