[解決済み] pythonからsendmailでメールを送信する
2023-08-08 01:09:11
質問
SMTPではなく、sendmailでメールを送信したい場合、この処理をカプセル化するpythonのライブラリはありますか?
もっと良いのは、全体の 'sendmail -versus- smtp' の選択を抽象化する良いライブラリはありますか?
私はこのスクリプトを多くの unix ホストで実行する予定ですが、そのうちのいくつかは localhost:25 をリッスンしています。
グッドプラクティスの一部として、私は本当にライブラリがヘッダインジェクションの脆弱性自体をケアするようにしたいと思います。
popen('/usr/bin/sendmail', 'w')
に文字列をダンプすることは、私が望むよりも少し金属に近いです。
もし答えが「ライブラリを書いてこい」なら、そうしてください ;-)
どのように解決するのですか?
ヘッダーインジェクションは、メールの送り方ではなく、メールの組み立て方に要因があります。 以下の
メール
パッケージをチェックし、それを使ってメールを作成し、シリアライズし、それを
/usr/sbin/sendmail
を使って
サブプロセス
モジュールを使っています。
import sys
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
msg = MIMEText("Here is the body of my message")
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
msg["Subject"] = "This is the subject."
p = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE)
# Both Python 2.X and 3.X
p.communicate(msg.as_bytes() if sys.version_info >= (3,0) else msg.as_string())
# Python 2.X
p.communicate(msg.as_string())
# Python 3.X
p.communicate(msg.as_bytes())
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] virtualenvsはどこに作成するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複