Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Mailer.send() raises NameError: add_charset, charset_QP, Header and Encoders are not imported (1.20260805.0)

Offen Anfängerfreundlich
#1,069 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
1/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
92/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
backend

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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus web2py/py4web

Alle Issues in web2py/py4web

Ähnliche Issues

Weitere Issues zu Backend & API Design

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.