The reason is simple: it is more than a 0% chance that your object will be changed in the meantime, when you ordered sending mail and executing the real code of the mail program. Imagine that the object you are using will be deleted in the process, but since you did not load your object at run time, it will try to use an instance of the object that no longer exists. I think now you understand the problem.
source share