Mailer.send() raises NameError: add_charset, charset_QP, Header and Encoders are not imported (1.20260805.0)
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 92/100
Rechercherichtung
Öffne py4web/utils/mailer.py und prüfe die von pyflakes gemeldeten undefinierten Namen: add_charset, charset_QP, Header und Encoders. Reproduziere den Fehler mit dem Mailer.send()-Beispiel und verifiziere dann, dass normale Nachrichten und die Anhangsbehandlung keinen NameError mehr auslösen und dass die UTF-8-quoted-printable-Nachricht korrekt erzeugt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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)
- Vorherrschende Sprache
- HTML
- Sterne
- 321
- Forks
- 145
- Ø Merge
- 1 Min.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus web2py/py4web
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 50/100
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
Maintainer antworten meist innerhalb von 8 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
its-me-prash/vwgroup-connect-ha#1858 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Deleting all alarms or timers shows deleted ones until the next update when there are none leftOffenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
leikoilja/ha-google-home#1107 ·
Maintainer antworten meist innerhalb von 1 Tag
-
🐛 bug 🗺️ DB Models & Ops
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
LibreChat-AI/LibreChat#17214 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag