hehehe, I know the pain.

Attempting a second time the same thing would mean that the `encode` could be non-deterministic, in which case we are in real troubles hehe.

If `body` is `unicode` this won't fail, *ever*.
```python
body = body.encode('utf-8', 'replace')
```

But, if `body` is `str` and contains some non-ascii character... It will fail, *always*. Since it tries to decode the `str` with the defailt python encoding (`ascii`) implicitly, to be able to encode it again with `utf-8`.

The code that won't fail would be:

```python
charset = find_charset(content_type)
logger.debug('got charset from content-type: %s' % charset)
if charset is None:
    charset = self._get_charset(body)
    logger.debug('got charset from body: %s' % charset)

try:
    if isinstance(body, unicode):
        body = body.encode(charset)
except UnicodeError as exc:
    logger.error(
        "Unicode error, using 'replace'. {0!r}".format(exc))
    logger.debug("Attempted to encode with: %s" % charset)
    body = body.encode(charset, 'replace')

return write_fd(body)
```

The thing that worries me is that we are not sure of the `type` of the `body` when we get it... but I think that is a problem to tackle later.