Please post complete info, e.g. the actual error
First off, Sklearn .fit() takes two arguments, 1) a 2D array of training data, and 2) a 1D array of labels/targets. So you need to reformat your input variable to a list-of-lists (even though you only have 1 predictor variable)
from sklearn.naive_bayes import MultinomialNB
model = MultinomialNB()
emails = [['example mail'], ['another example mail']]
labels = ['ham', 'spam']
model.fit(emails, labels)
Once this runs you will get another error:
TypeError: '<' not supported between instances of 'numpy.ndarray' and 'int'
Because you are passing words into a mathematical equation. As per the linked implementation detail in the documentation https://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html you should be building your own parameters out of the input texts (e.g. word counts, sentiment analysis, binarized features (is this present/absent) etc.
If you properly format your data, generating character count and word count for each email you may have something workable:
from sklearn.naive_bayes import MultinomialNB
model = MultinomialNB()
emails = [['example mail'], ['another example mail']]
emails = [[len(x[0]), len(x[0].split())] for x in emails]
labels = ['ham', 'spam']
model.fit(emails, labels)
then if you pass similarly formated test data you will get an output
emails = [['test mail'], ['another test mail']]
emails = [[len(x[0]), len(x[0].split())] for x in emails]
model.predict(emails)
Out[17]: array(['ham', 'spam'], dtype='<U4')
Since both test mails are the same word count, and a similar character count you get the expected ham/spam output