Broadcast group

Some weeks ago I saw a discussion where a teacher intended to use Deltachat for communication with his pupils. With this discussion he asked how to use a broadcast group with DC.
Especially now in “Corona” times, where many pupils are at home and are forced to do “home schooling” a broadcast function as requested would make sense.

Unfortunately I don’t find the discussion any more for reference. I know, it was here at forum or at delta’s github issues.

To focus on that requested function I opened now this new FR.

Expected behavior

Having a group where - outgoing - mails are sent individually to each group member.
No one should see the whole group list.
All addresses into BCC header!

Actual behavior

Standard group sends a message to all group members.
All addresses are included in the “To:” header field.
Every group member can see the whole address list.

Approach (first idea):

Extend existing group with a flag, to be a “Broadcast group”.
This flag could be set in group settings.
When a message to group is send, all addresses are placed in “bcc:” header instead of “To:” header.
“To:” header could include only sender address?

Possible answers to this group could

  • end in 1:1 chats or
  • mapped by “In-Reply-To:” header to group
1 Like

I think you mean this discussion.

https://support.delta.chat/t/broadcast-messages-for-later-version-after-1-0-release/208

I also would like this feature.

1 Like

@webratte

Yes, You are describing exactly the same than me :slight_smile:
Thanks for that hint :slight_smile:

But there was another discussion I mentioned. I thought to this one!

We should help teachers and pupils with DC as I see now in daily business how they struggle with one other messenger!

1 Like

The key idea to come to a broadcast group is so easy that it should not be a big effort to do it in short term?

@r10s @link2xt
What’s Your opinion?

1 Like

I’m just working at an experimental Broadcast Group with following specification:

  1. all changes are based at the core
  2. use group name to identify Broadcast Group. When name ends with “#BCC” this is the flag
  3. introduce Mimefactory::bcc_group flag. it is set when 2) is triggered while rendering the a message
  4. set “Bcc:” header for all recipients instead of “To:” header
    use receipients list for smtp. Don’t set “Bcc:” header!
  5. set “To:” header to a default “Hidden recipients: ;” (Thunderbird does the same in that case)
  6. don’t set Chat group headers in that case.

Implementation is done, now I’m testing …

2 Likes

It works as expected :slight_smile:

Will push the code to github and do a PR

Tests shows that replies will end in 1:1 chat now.
In-Reply-To is set by a reply but DC is not mapping it to group.

This is the link to a binary (see version info):

I would rather have it as an entirely new chat type, not as a modifier to existing groups, I guess this could make problems.

Also we should keep in mind that this feature should work nicely with multi device setups. (also for the sender)
I haven’t looked closely at you code yet so I can only ask if it already considers multiple devices for the sender.

The flag/Broadcast setting:
It would be more professional to set a flag in group settings, but then you need an extension of user interface. For this first step I want to prevent this (as I don’t know how to realize that in short term now).

Problems?
Basic operation of this approach shows no problems now. The approach is simple.
All receipients will get a message like from a 1:1 chat. They don’t see the group. This is the nature of broadcast :slight_smile:

The biggest effort while implementing was, learning that BCC header must NOT be used and that MTA (e.g. sendmail) does not delete a BCC header in outgoing message!

Multi device usage:
Yes, this is not in focus here! You’re right.
The outgoing message is sent to yourself anyway, but to see it in group at other devices more efforts are necessary: It needs to be sent to yourself as full group message with all adresses. This is not done here and is not in focus, yet :wink: