Я никогда не пытался делать то, что ты делаешь, но не должен твои строки:
Dim OutlookMessage As outlook.MailItem = AppOutlook.CreateItem(outlook.OlItemType.olMailItem)
AppOutlook = CreateObject("Outlook.Application")
поменять? Так что ваше OutlookMessage не основано на этом новом экземпляре? Конечно, у вас есть проблема с тем, что, если у них не установлен Outlook.
Я думаю, что если не получить информацию о настройках электронной почты от вашего пользователя, может быть довольно сложно заставить электронную почту отправлять ее так, чтобы она всегда работала. Учитывая блокировку порта 25, фильтрацию SMTP и т. Д. Даже если вы использовали настройки, которые пользователь ввел для почты, как указано в панели управления, многие люди используют электронную почту через Интернет, и я не могу себе представить, что это сработает. Я полагаю, вы могли бы использовать свою учетную запись электронной почты, которая, как вы знаете, будет работать для отправки.
Dim Smtp As New SmtpClient()
Smtp.Credentials = New Net.NetworkCredential("user@gmail.com", "password")
Smtp.EnableSsl = True
Smtp.Port = 587
Smtp.Host = "smtp.gmail.com"
Dim Email As New MailMessage()
Email.From = New MailAddress("user@gmail.com")
Email.To.Add("oliverbroomhall1712@gmail.com")
Email.Subject = "Test Mail"
Email.Body = "SMTP server test"
Smtp.Send(Email)
Но это кажется мне немного неправильным. Я думаю, что я мог бы попробовать одно из этих решений и дать пользователю возможность дать вам некоторые настройки, если это не так.