Afzender met alleen een naam ('Machiel Heinen') wordt 'Naam <inlognaam>' (mail.sender): zonder adres weigerde de ontvangende server het bericht; zelfde afzender in de verstuurde mail in de CRM

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Machiel
2026-10-16 18:06:12 +02:00
co-authored by Claude Opus 5.5
parent 366a3f9d17
commit 8f6e1ab443
2 changed files with 15 additions and 5 deletions
+1 -1
View File
@@ -1487,7 +1487,7 @@ def mail_send():
cid = contact['id'] if contact else None
db().execute("INSERT INTO emails (message_id, direction, contact_id, from_addr, to_addr, cc, subject, body, "
"attachments, date, is_read) VALUES (?, 'out', ?, ?, ?, ?, ?, ?, ?, ?, 1)",
(message_id, cid, get_setting('smtp_from') or get_setting('smtp_user'), to, cc, subject, body,
(message_id, cid, mail.sender(settings_dict()), to, cc, subject, body,
', '.join(name for name, _, _ in files), now()))
if cid:
log(cid, 'email', f'E-mail verstuurd: {subject}')
+14 -4
View File
@@ -12,6 +12,7 @@ import smtplib
import ssl
import time
from datetime import datetime, timedelta
from email.headerregistry import Address
from email.message import EmailMessage
from email.policy import default as policy
from email.utils import formatdate, make_msgid, parseaddr, parsedate_to_datetime
@@ -173,19 +174,28 @@ def fetch(cfg, known, limit=200):
pass
def sender(cfg):
"""Afzender voor From: smtp_from, of de inlognaam. Alleen een naam in smtp_from ('Machiel Heinen') wordt
'Machiel Heinen <inlognaam>': zonder adres weigert de ontvangende server het bericht."""
user = cfg.get('smtp_user') or cfg.get('imap_user', '')
raw = (cfg.get('smtp_from') or '').strip()
name, addr = parseaddr(raw)
if '@' not in addr:
name, addr = raw, user
return str(Address(display_name=name, addr_spec=addr)) if name and addr else addr
def send(cfg, to, subject, body, in_reply_to=None, cc='', attachments=()):
"""Versturen; geeft (Message-ID, waarschuwing of None). Een mislukte kopie in Verzonden is alleen een waarschuwing.
attachments = [(bestandsnaam, bytes, mimetype)]."""
user = cfg.get('smtp_user') or cfg.get('imap_user', '')
sender = cfg.get('smtp_from') or user
msg = EmailMessage()
msg['From'] = sender
msg['From'] = sender(cfg)
msg['To'] = to
if cc:
msg['Cc'] = cc
msg['Subject'] = subject
msg['Date'] = formatdate(localtime=True)
domain = parseaddr(sender)[1].rpartition('@')[2] or None
domain = parseaddr(msg['From'])[1].rpartition('@')[2] or None
msg['Message-ID'] = make_msgid(domain=domain)
if in_reply_to:
msg['In-Reply-To'] = in_reply_to