Я думаю, что ответ на следующий вопрос может быть решением.
В ответе упоминается, что контент должен начинаться с новой строки. Если это не так, контент становится частью заголовка сообщения, а не тела сообщения.
И еще один момент, который я заметил в документации smtplib , указано, что from_address и to_address должны соответствовать формату RFC822 . Как только вы проверите, правильно ли вы придерживаетесь этого формата или нет.
Так что я не знаю, сработает ли это или нет, попробуйте изменить "from_address" на "<" + "from_address" + ">".
Насколько я знаю, нет действительно свойства, которое указывает на индекс Вашего объекта. Если у Вас есть доступ к исходному списку объектов, с которыми связывается Ваш ListBox, Вы могли получить доступ к DataContext своей Гиперссылки для определения индекса объекта, как это:
var hyperlink = (Hyperlink)sender;
var item = (SourceType)hyperlink.DataContext;
int index = sourceList.IndexOf(item);
С другой стороны, Вы могли назвать ItemsControl. ContainerFromElement на гиперссылке, чтобы связать ListBoxItem с Гиперссылкой и затем найти позицию ListBoxItem в ListBox, но это действительно не получает Вас ничто, что Вы уже не имели.