A bridge solely works on the data link layer (L2). It has no notion of IP addresses or IP-MAC associations (usually stored in an ARP table) required for the network layer (L3).
Firstly, D sends packet to B3 nad B3's forwarding table is updated. B3 sends packet to B2. Therefore, B2's forwarding table is updated but B2 doesn't know MAC address of E.
That's not the way it works. For an IP packet, D first needs to find out E's MAC address - it sends an ARP request (broadcast) which is forwarded by all bridges. The bridges also learn D's MAC address and the port it's located on from their perspective. E replies to the D's ARP request (by unicast), updating B1 and B2 with its MAC address/port combination.
When D sends the actual IP packet, the bridges on the path have already learned all they need to know.
Generally, an ARP table and a MAC address table (also source address table or CAM table) are two very different things. An ARP table maps (local) IP addresses to MAC addresses. A MAC address table maps MAC addresses to (local) ports.
A node participating in IP requires an ARP table but usually doesn't have a MAC table. A bridge/switch doesn't actively participate in IP but for its L2 function it requires a MAC/port table.