I think either are acceptable, but I think one will have better performance. I am pretty sure "NOT NULL" is not sargable so you may have a performance hit by using it. Plus I am fairly certain that comparing int values is faster than comparing string values.
That being said, the emailsent=0 I expect will reduce the search scope a lot so the number of rows returned would be small and the comparison for NOT NULL won't touch that many columns.
And, depending on what is stored in MyTable, and the number of possible values for ErrorMessage, it may make sense to normalize that data. If for example, if each error message is approximately 1 KB in size, you could save roughly 1 KB (as an int is only 4 bytes) per row with a message by having a lookup table with an int ID column and the message text. If you use this approach as well, you could save the IS NOT NULL too by having 0 be success and greater than 0 failure. So ErrorMessage becomes ErrorMessageID which is an int, and your check is where ErrorMessageID > 0.
May be overkill for your situation, but may be helpful as the table grows in size.