0

この質問が以前に(何度も)尋ねられた可能性は非常に高いですが、解決策が見つかりません。

メールを送信するプログラムがあります。コードは次のようになります。

Dim oApp As Interop.Outlook.Application = Nothing
While oApp Is Nothing
    Try
        oApp = New Interop.Outlook.Application
    Catch ex As Exception
        oApp = Nothing
        Dim result As Integer = MessageBox.Show("Outlook is already running, close Outlook and click OK to continue sending this email or click Cancel to skip sending this email.", "Outlook", MessageBoxButtons.OKCancel)
        If result = DialogResult.Cancel Then
            Exit Sub
        End If
    End Try
End While

ここまでは順調ですね。ユーザーは、Outlook アプリケーションを使用するために Outlook を閉じる必要があります。これが完了したら、私はこれを行います:

Dim eMail As Interop.Outlook._MailItem
eMail = oApp.CreateItem(Interop.Outlook.OlItemType.olMailItem)

'To who?
eMail.To = "person@domain.com"

'Sbuject
eMail.Subject = "Foo"

'Message
Dim message As String = "Bar"
eMail.HTMLBody = message

'Send
eMail.Send()

魅力のように機能しますが、これが完了すると、トレイにこの小さなアイコンが表示され、Outlook が実行中であることが示されます。Outlook クライアントを開こうとすると、Outlook が既に実行されているというメッセージが表示されます。クライアントを使用する前に、トレイのアイコンをクリックして閉じる必要があります。メールが送信されたときにコードからこのアプリケーションを閉じるにはどうすればよいですか?

私は成功せずにこれを試しました:

oApp.Quit()
oApp.Application.Quit()
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oApp)
oApp = Nothing

どんな助けでも大歓迎です。

4

0 に答える 0