The main difference is permission. Spam emails (or unsolicited emails) are sent without any permission, and are generally evocative in some way.
Direct emails are those that, while resembling spam in some ways, are sent to you with your permission. They generally inform you of a new product, event, or look to gain some sort of information for statistical purposes that have to do with a service you subscribe to.
While you may not recall giving a certain company/service your permission, this permission may have been given during an application installation, or through a web-forum registration, for example. With direct mail, they will generally give you the option to decide whether or not you wish to receive emails from their sales/marketing teams, before or after the fact.
Direct mail = not bad, received with permission, can be annoying.
Spam = malicious, received without permission, annoying.
As a little addendum, if you are referring to direct mail in the sense of physical mail, like that your neighborhood postal worker would deliver, the differences are obvious, and have nothing to do with security (unless you've got a nasty war-driving postal worker in your area).