Fixed send behavior.
This commit is contained in:
@@ -82,17 +82,23 @@ async def send_message(
|
|||||||
detail=f"No valid recipients found. Failed: {', '.join(failed_recipients)}"
|
detail=f"No valid recipients found. Failed: {', '.join(failed_recipients)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Create message
|
# Create message
|
||||||
new_msg = Message(
|
new_msg = Message(
|
||||||
text=payload.text,
|
text=payload.text,
|
||||||
msg_from=username,
|
msg_from=username,
|
||||||
msg_to=to_tuple,
|
msg_to=tuple(valid_recipients),
|
||||||
attachments=()
|
attachments=()
|
||||||
)
|
)
|
||||||
|
|
||||||
# Deliver to valid recipients + always sender (sent folder)
|
# Deliver to valid recipients + always sender (sent folder)
|
||||||
messages_root = root.setdefault('messages', PersistentMapping())
|
messages_root = root.setdefault('messages', PersistentMapping())
|
||||||
delivered_to = set([username]) # sender always gets copy
|
delivered_to = set()
|
||||||
|
# Always give sender a copy in their mailbox (acts as Sent folder)
|
||||||
|
sender_mailbox = messages_root.setdefault(username, PersistentList())
|
||||||
|
sender_mailbox.append(new_msg)
|
||||||
|
sender_mailbox._p_changed = True
|
||||||
|
delivered_to.add(username) # now accurate
|
||||||
|
|
||||||
for recip in valid_recipients:
|
for recip in valid_recipients:
|
||||||
mailbox = messages_root.setdefault(recip, PersistentList())
|
mailbox = messages_root.setdefault(recip, PersistentList())
|
||||||
@@ -107,7 +113,7 @@ async def send_message(
|
|||||||
"status": "sent",
|
"status": "sent",
|
||||||
"message_id": str(new_msg.msg_id),
|
"message_id": str(new_msg.msg_id),
|
||||||
"from": username,
|
"from": username,
|
||||||
"to": list(to_tuple),
|
"to": list(valid_recipients),
|
||||||
"sent_at": new_msg.sent_at.isoformat() + "Z",
|
"sent_at": new_msg.sent_at.isoformat() + "Z",
|
||||||
"recipients_delivered": len(delivered_to)
|
"recipients_delivered": len(delivered_to)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user