We actually want these `raise` calls to be at the top of the method body. Before we do anything else, we should error out if the proper conditions are not met. I'd also add a bit of whitespace between the functional units of this method, like so:

```ruby
raise "the body of the message must not be empty" if self.body.blank?
raise ArgumentError, "both sender and recipient must be specified" unless sending && receiving

self.sender = sending
self.recipient = receiving

self.save
```

Doing so not only makes the method more readable and maintainable, but also serves as a reference point for any future decomposition.