+(
2) Сама по себе отправка писем не является чем-то плохим. Плохим решением является вносить отправку почты внутрь транзакции проведения. Да и вообще - внутрь любой транзакции, т.к. обеспечить откат отправки в случае отката транзакции ты не сможешь при всем желании.
Нужно сделать рядом, не зависимый от обработки проведения механизм, который выбирает проведенные документы, по которым еще не было отправки, и отправляет по ним письма, сохраняя при этом где-то признак, что письмо по этому доку отправлено и повторно не надо отправлять.