このプロジェクトについて
sendsmtpは、サードパーティ製の依存関係を持たず、純粋なPythonで実装された小型のコマンドラインSMTPクライアントです。UTF-8のtext/plainメールメッセージを作成してSMTPサーバーに引き渡すため、スクリプトによる通知、ビルドレポート、またはシェルからコマンド出力をメールにパイプ処理する用途に適しています。
インストールと要件
このパッケージはpip(python3 -m pip install --user --upgrade sendsmtp)でインストールし、Python 3.11以降が必要です。
基本的な使い方
このコマンドは、HOST(SMTPサーバーのホスト名またはIP)、FROM(SMTPエンベロープ送信者とFromヘッダーの両方で使用)、TO(1つのアドレス、またはコンマの周りにスペースがない複数のコンマ区切りアドレス)の3つの位置引数を取ります。一般的な呼び出しでは、-mでメッセージ本文をインライン指定し、-sで件名を指定します。サーバーがメッセージを受け入れると成功が報告されます。
メッセージ本文のソース
本文の取得元には3つの方法があります。-m/--messageオプションはインラインで提供します。-i/--inputオプションはファイルパスから読み込み、--messageよりも優先されます。パスが存在するファイルではない場合、このオプションは無視され、本文は--messageまたは標準入力にフォールバックします。どちらのオプションも指定されていない場合、本文は標準入力から読み込まれます。パイプ入力はEOFまで読み込まれ、対話型ターミナルでは、EOFのみを含む行が入力されるまで行を読み込むプロンプトがトリガーされます。
件名の処理
--subject/-sは件名を明示的に設定します。これが省略され、本文がSubject:行で始まる場合、その行は本文から削除され、代わりに件名として使用されます。
接続のセキュリティとポート
クライアントは3つのモードをサポートしています。プレーンSMTPはデフォルトでポート25を使用します。--starttlsはプレーンテキストで接続し、STARTTLS拡張機能を使用して接続をアップグレードします(デフォルトはポート587)。-t/--tlsは最初のバイトから暗黙的TLS(SMTPS)を使用します(デフォルトはポート465)。2つのTLSオプションは排他的であり、-p/--portはどのモードでもデフォルトポートを上書きします。
認証
-u/--usernameはSMTP AUTHを有効にします。これがない場合、AUTHの試行は行われません。--passwordなしでユーザー名が指定された場合、パスワードのエコーバックなしでインタラクティブに入力が求められます。ドキュメントによると、コマンドラインは他のプロセスから見えたりシェル履歴に記録されたりするため、これが推奨されています。認証に失敗すると実行が中断され、メッセージは送信されません。
TO以外の受信者
-c/--ccは、CCヘッダーに表示されメッセージを受け取るカーボンコピーの受信者を追加します。-b/--bccは、メッセージを受け取るもののどのヘッダーにもリストされないブラインドカーボンコピーの受信者を追加します。どちらもコンマ区切りのアドレスリストを受け付けます。
診断
-v/--verboseは、SMTPダイアログをstderrに出力し、接続と認証のステップを報告し、メッセージが配信されたアドレスをリストし、失敗時には1行のエラーの代わりに完全なスタックトレースを表示します。これが指定されていない場合、失敗時は1行のエラーメッセージのみが生成されます。
メッセージヘッダーと終了コード
生成されたメッセージには、From、To、Subject、CC(--ccが指定されている場合のみ)、およびX-Mailer: sendsmtpヘッダーが含まれます。終了コード0はサーバーがすべての受信者に対してメッセージを受け入れたことを意味し、1はエラーまたは少なくとも1人の拒否された受信者を示し、130はCtrl-Cによる割り込みを通知します。
ライセンス
このプロジェクトはMITライセンスの下で公開されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.