1

私は次のコードを持っています:

Set myMailanon = CreateObject("CDO.Message")
myMailanon.MimeFormatted = True

Set myConfanon = Server.CreateObject("CDO.Configuration")
Set objBPanon = myMailanon.AddRelatedBodyPart("http://www.foo.bar/img/logo1.jpg", "http://www.foo.bar/img/logo1.jpg", CdoReferenceTypeName)
objBPanon.Fields.Item("urn:schemas:mailheader:Content-ID") = "<http://www.foo.bar/img/logo1.jpg>" 
objBPanon.Fields.Update 
ConfURLanon = "http://schemas.microsoft.com/cdo/configuration/"

with myConfanon        
  .Fields.Item(ConfURLanon & "sendusing") = 2        
  .Fields.Item(ConfURLanon & "smtpserver") = "smtp.foo.bar"        
  .Fields.Item(ConfURLanon & "smtpserverport") = 25     
  .Fields.Item(ConfURLanon & "smtpusessl") = false
  .Fields.Item(ConfURLanon & "smtpauthenticate") = 1
  .Fields.Item(ConfURLanon & "sendusername") = "foo@bar.com"
  .Fields.Item(ConfURLanon & "sendpassword") = "foobarpass"
  .Fields.Update
end with

with myMailanon
  .Subject='Foo!! Bar!!'
  .From='Foo!! Bar!! <foo@bar.com>'      
  .To='foo@bar.com,bar@foo.com'      
  txt="This is foo... bar... text... SPARTAAAAAAAAA"
  .HTMLBody = txt
  Set .Configuration = myConfanon   
  On Error Resume Next 
  .Send      
end with

問題は、このコードを100回実行すると、30回動作し、70回失敗することです。ランダムに。また、「失敗」とは、スクリプトの実行タイムアウトが発生することを意味します。

行ごとにコメントしたところ、エラーは「.Send」に起因するという結論に達しました。しかし、なぜ?何か案は?

よろしく

4

1 に答える 1

1

コードに問題はありません(CdoReferenceTypeName少し疑わしいように見えますが、変数の名前付けが不十分である可能性があります)。SMTPサーバーがビジーであるため、送信の処理に時間がかかっている可能性があります。

IISマネージャーのASP機能に指定されているスクリプトタイムアウト値を確認できます。デフォルトでは90秒ですが、何らかの理由で低い値に設定されている可能性があります。

コードでスクリプトを指定することにより、スクリプトの時間を増やすことができます。

Server.ScriptTimeout = 300

これにより、スクリプトに5分かかります。これは、WebサーバーとSMTPサーバー間のセットアップの問題を覆い隠している可能性がありますが、成功率が上がる可能性があります。他の方法でも同じ結果が得られる可能性がありますが、70%の障害が発生するまでに時間がかかります。

原因が何であれ、私はそれがあなたのコードだとは思いません。

于 2012-05-07T19:58:55.243 に答える