5

電子メールを送信する古い System.Web.Mail を使用しても問題なく動作します。コード スニペットは次のとおりです。

 Public Shared Sub send(ByVal recipent As String, ByVal from As String, ByVal subject As String, ByVal body As String)
        Try
            Dim Message As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
            Message.To = recipent
            Message.From = from
            Message.Subject = subject
            Message.Body = body
            Message.BodyFormat = MailFormat.Html
            Try
                SmtpMail.SmtpServer = MAIL_SERVER
                SmtpMail.Send(Message)
            Catch ehttp As System.Web.HttpException
                critical_error("Email sending failed, reason: " + ehttp.ToString)
            End Try
        Catch e As System.Exception
            critical_error(e, "send() in Util_Email")
        End Try
    End Sub

更新されたバージョンは次のとおりです。

Dim mailMessage As New System.Net.Mail.MailMessage()

        mailMessage.From = New System.Net.Mail.MailAddress(from)
        mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))

        mailMessage.Subject = subject
        mailMessage.Body = body

        mailMessage.IsBodyHtml = True
        mailMessage.Priority = System.Net.Mail.MailPriority.Normal

        Try

            Dim smtp As New Net.Mail.SmtpClient(MAIL_SERVER)
            smtp.Send(mailMessage)

        Catch ex As Exception

            MsgBox(ex.ToString)

        End Try

私は多くの異なるバリエーションを試しましたが、何もうまくいかないようです.SmtpClientに関係している可能性があります.これらのバージョン間で基になるコードに何か変更がありますか?

スローされる例外はありません。

4

6 に答える 6

1

System.Net.Mail ライブラリは構成ファイルを使用して設定を保存するため、このようなセクションを追加するだけでよい場合があります

  <system.net>
    <mailSettings>
      <smtp from="test@foo.com">
        <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
      </smtp>
    </mailSettings>
  </system.net>
于 2008-09-09T17:14:22.217 に答える
0

追加してみましたか

smtp.UseDefaultCredentials = True 

送る前?

また、変更しようとするとどうなりますか:

mailMessage.From = New System.Net.Mail.MailAddress(from)
mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))

これに:

mailMessage.From = New System.Net.Mail.MailAddress(from,recipent)

-- ケビン・フェアチャイルド

于 2008-09-09T17:10:26.437 に答える
0

あなたのコードをテストしたところ、私のメールは正常に送信されました。古いコードに同じパラメーターを使用していると仮定すると、メール サーバー (MAIL_SERVER) がメッセージを受け入れており、処理に遅延があるか、スパムと見なして破棄することをお勧めします。

3 番目の方法 (勇気がある場合は telnet) を使用してメッセージを送信し、それが成功するかどうかを確認することをお勧めします。

編集:(その後の回答から)ポートを指定すると多少助けになったことに注意してください。ポート 25 (SMTP) を使用しているか、ポート 587 (送信) を使用しているか、またはその他の何かを使用しているかについては言及していません。まだ行っていない場合は、吸い込みポートを使用すると問題が解決する場合もあります。

ウィキペディアrfc4409に詳細があります。

于 2008-09-09T17:13:46.583 に答える
0

電子メールの資格情報を設定していますか?

smtp.Credentials = New Net.NetworkCredential("xyz@gmail.com", "password")

このエラーが発生しましたが、例外がスローされたと思います。

于 2008-09-09T17:13:59.923 に答える
0

あなたがしていることはすべて正しいです。ここに私がチェックするものがあります。

  1. IIS の SMTP サービスが正しく実行されていることを再確認してください。
  2. スパムとしてフラグが立てられていないことを確認してください。

これらは通常、電子メールの送信で問題が発生したときの最大の原因です。

また、MsgBox(ex.Message) を実行していることに気付きました。サービス パックで MessageBox が asp.net を動作させるのをブロックしたと思われるため、エラーが発生している可能性があります。イベントログを確認してください。

于 2008-09-09T17:23:36.640 に答える
0

メール サーバーのポート番号を追加したところ、散発的に動作するようになりました。サーバーに問題があり、メッセージの送信が遅れていたようです。あなたの答えをありがとう、それらはすべて役に立ちました!

于 2008-09-09T17:35:28.793 に答える