Celery operates with a message broker (like RabbitMQ or Redis) to pass messages between the client and worker nodes. When an email task is queued, the worker processes the task and sends the email. This allows for asynchronous processing, meaning your application can continue functioning without waiting for the email to be sent.