Ошибка при отправке почты через outlook в vb? - PullRequest
0 голосов
/ 14 февраля 2012

Произошло необработанное исключение типа 'System.Runtime.InteropServices.COMException' в myprogram.exe

Дополнительная информация: операция прервана (Исключение из HRESULT: 0x80004004 (E_ABORT)) *

Следующий код является причиной ошибки:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim AppOutlook As New outlook.Application
        Dim OutlookMessage As outlook.MailItem = AppOutlook.CreateItem(outlook.OlItemType.olMailItem)
        AppOutlook = CreateObject("Outlook.Application")
        Dim Recipents As outlook.Recipients = OutlookMessage.Recipients
        Recipents.Add("oliverbroomhall1712@hotmail.co.uk")
        OutlookMessage.Subject = "Sending through Outlook"
        OutlookMessage.Body = "Testing outlook Mail"
        OutlookMessage.Send()
        OutlookMessage = Nothing
        AppOutlook = Nothing

    End Sub

Ошибка была найдена в строке 7, где говорится:

Dim Recipents As outlook.Recipients =OutlookMessage.Recipients

Если это не слишком сложно, есть ли способ сделать это без перспективы?Потому что, что происходит, когда у пользователя не установлен Outlook?Мне нужен способ отправить электронное письмо из моей заявки, если кто-то может мне помочь:)

1 Ответ

0 голосов
/ 14 февраля 2012

Я никогда не пытался делать то, что ты делаешь, но не должен твои строки:

   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)

Но это кажется мне немного неправильным. Я думаю, что я мог бы попробовать одно из этих решений и дать пользователю возможность дать вам некоторые настройки, если это не так.

...