1

誰でも以下のコードを見て、恐ろしいエラー 91 の受信を停止する方法をお勧めできますか。エラー: オブジェクト変数またはブロック変数が設定されていません。mailto: 関数を使用して、ネイティブの電子メール クライアントを使用して電子メールを送信し、グリッドビューからのデータを電子メールに入力しています。エラーが表示されたら、[OK] をクリックするだけで、必要な正確なデータがメールに読み込まれます。

Protected Sub GridView2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView2.SelectedIndexChanged, GridView1.SelectedIndexChanged
    Dim MailFormat, Number, BodyOfEmail, FullName As String
    Dim RowValue As Double

    RowValue = GridView1.SelectedDataKey.Value - 1
    Number = GridView1.Rows(RowValue).Cells(5).Text.ToString
    FullName = GridView1.Rows(RowValue).Cells(25).Text.ToString
    BodyOfEmail = “SomeTextInTheBody”
    MailFormat = "mailto:" & Number & "?" & "subject= A subject here" & "&body=" & BodyOfEmail
    System.Diagnostics.Process.Start(MailFormat)
End Sub

.aspx ページから次のコードを問題なく実行できます。

a href="mailto:someone@example.com?Subject=Hello%20again"

Outlook は問題なく開きます。上部の aspx.vb コードが実行された場合にのみ問題になるようです...

ありがとう

4

2 に答える 2

4

<a href="mailto:xxx"/>これはユーザーのブラウザーで実行されているため問題なく動作し、ユーザーがローカルにインストールしたインタラクティブな電子メール アプリケーションを使用します。

Process.Start("mailto:xxx")Web サーバー上で実行されているため、ローカルにインストールされた対話型電子メール アプリケーションが利用できないため、常に失敗します。また、存在する場合でも、存在しないデスクトップ上で対話的に起動することはできません。テスト環境でエラー 91 がスローされるという事実は関係ありません。やるな、完全停止。

サーバー側のイベントが完了した後、ページのレンダリング時に JavaScript を少し実行するように調整する必要があります。のようなものlocation.href = "mailto:xxx"がうまくいくかもしれません。これを挿入する正確な場所は、ページのデザインによって異なります。

または、電子メール生成コードをサーバー側に完全に保持する必要があり、ユーザーが常に Outlook を使用することがわかっている場合は、Exchange Server を直接呼び出すことを検討できます。出発点については、こちらを参照してください。

于 2013-04-23T16:28:18.557 に答える