`__toString()` is problematic with regard to message entity bodies. An entity body is often a stream resource because you can't buffer an enormous file. Great. No problem, we just buffer it as needed in `__toString()` ... except `__toString()` can't throw. So if an error occurs while buffering the entity stream (filesystem error ... whatever) there's no way to debug -- you simply get a truncated message because things errored out after the headers or an empty string. Neither is a good option. Until PHP allows you to throw from `__toString()` you kind of have to name this method `buffer()` (or something).