Mailer.send() raises NameError: add_charset, charset_QP, Header and Encoders are not imported (1.20260805.0)
まだ誰も着手していません。
評価
調査の方向性
py4web/utils/mailer.py を開き、pyflakes が報告する未定義の名前 (add_charset、charset_QP、Header、Encoders) を確認します。Mailer.send() の例で失敗を再現し、通常のメッセージと添付ファイルの処理が NameError を発生させなくなったこと、および UTF-8 quoted-printable メッセージが正しく構築されることを検証します。
索引モデルが issue の本文から書いたものです。
説明
Description
In py4web 1.20260805.0 (the latest release on PyPI), and on current master, Mailer.send() raises NameError on every call, so no email can be sent. That includes the emails sent by Auth.
py4web/utils/mailer.py uses four names that it never imports:
| Line | Name |
|---|---|
| 391 | add_charset |
| 391 | charset_QP |
| 395 | Header |
| 235 | Encoders (attachments only) |
They used to come from from pydal._compat import *. Commit 1df05c3 ("last py4web version before the pydal refactor") removed that import without replacing those four names. pyflakes py4web/utils/mailer.py reports them as undefined.
Steps to reproduce
from py4web.utils.mailer import Mailer
m = Mailer(server="logging", sender="[email protected]")
m.send("[email protected]", "subject", "body")
Actual result
File ".../py4web/utils/mailer.py", line 391, in send
add_charset("utf-8", charset_QP, charset_QP, "utf-8")
^^^^^^^^^^^
NameError: name 'add_charset' is not defined
Suggested fix
Add the missing imports to py4web/utils/mailer.py:
from email import encoders as Encoders
from email.charset import QP as charset_QP
from email.charset import add_charset
from email.header import Header
I am working around it at the application level by injecting these names into py4web.utils.mailer. With that in place, send() builds a correct quoted-printable UTF-8 message and hands it to SMTP.
Environment
- py4web 1.20260805.0
- pydal 20260520.0
- Python 3.12 (Linux and Google App Engine)
- 主要言語
- HTML
- スター
- 319
- フォーク
- 144
- 平均マージ
- 1分
- マージ済み PR(30日)
- 1
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
web2py/py4web のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 50/100
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
Qiskit/qiskit-ibm-runtime#3431 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
edi-adapter-client enhancement helsemelding-edi-adapter
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
navikt/helsemelding-edi-adapter#102 ·
メンテナーはふだん 1 日以内に返信
-
bug:new
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
callstackincubator/simlock#350 ·
メンテナーはふだん 1 日以内に返信
-
Booking email verification fails for plus aliases with impersonation protection enabled対応中かも @kankadev が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
calcom/cal.diy#30293 · コメント 1 件 ·
メンテナーはふだん 5 日以内に返信