2014-09-23 4 views
0

Я установил URL-адрес веб-крючка на панели управления Mailgun и настроил скрипт для добавления файла txt с HTTP-сообщением из Mailgun в URL-адрес, когда возникает отскок. Я протестировал его, отправив HTTP-сообщение с тестовой страницы, представляющей форму, и данные формы записываются в файл txt. Однако, когда я запускаю тест из Mailgun, новая строка записывается, но сбор Request.Form появляется быть пустым.Mailgun webhooks and classic asp

Я что-то пропускаю в HTTP-сообщении от Mailgun и о том, как я пытаюсь получить от него сборку request.form?

<% 
strWebhookData = "///// New Entry ///" & vbnewline 
For Each Item In Request.Form 
     fieldName = Item 
     fieldValue = Request.Form(Item) 
     Response.write fieldName & " " & fieldValue 
     strWebhookData = strWebhookData & fieldName &" = " & fieldValue & vbnewline   
    Next 
Response.write strWebhookData 

set fs=Server.CreateObject("Scripting.FileSystemObject") 
    set f=fs.OpenTextFile(Server.MapPath("bounces.txt"),8,true) 
    f.WriteLine(vbnewline & strWebhookData) 
    f.Close 
set f=Nothing 
set fs=Nothing 

%> 

ответ

0

Не уверен, если это будет работать, но попробовать

For Each x In Request.Form 
    fieldName = x 
    fieldValue = Request.Form(x) 
    Response.write fieldName & " " & fieldValue 
    strWebhookData = strWebhookData & fieldName &" = " & fieldValue & vbnewline   
Next 
+0

Спасибо за это - но сценарий делает форму захвата переменные из тестовой страницы я использую, чтобы отправить к этой странице, но ничего из Mailgun HTTP Post не захватывая. Я попробую то, что вы предлагаете. –

+0

Каков почтовый код Mailgun HTTP Post? Можете ли вы проверить, действительно ли что-то действительно передается с помощью инструментов разработчика (хром) или Firebug (FireFox) – pee2pee

+0

Вот результат от HTTP_RAW, если это поможет. Content-Length: 4230 Content-Type: multipart/form-data; border = 2adc9741-1b71-4442-9377-170f6562daea Accept-Encoding: gzip User-Agent: mailgun/treq-0.2.1 –

0

I'm, используя этот код, я действительно не помню, где я нахожу это:

Response.Expires=0 
Response.Buffer = TRUE 
Response.Clear 
byteCount = Request.TotalBytes 
RequestBin = Request.BinaryRead(byteCount) 
Dim UploadRequest 
Set UploadRequest = CreateObject("Scripting.Dictionary") 
BuildUploadRequest RequestBin 

«Некоторые примеры переменных

strEvent = UploadRequest.Item("event").Item("Value") 
strEmail = UploadRequest.Item("recipient").Item("Value") 

«Вы можете найти все переменные на почтовом отправлении. Вход в журнал

Sub BuildUploadRequest(RequestBin) 
    'Get the boundary 
    PosBeg = 1 
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13))) 
    boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg) 
    boundaryPos = InstrB(1,RequestBin,boundary) 
    'Get all data inside the boundaries 
    Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--"))) 
     'Members variable of objects are put in a dictionary object 
     Dim UploadControl 
     Set UploadControl = CreateObject("Scripting.Dictionary") 
     'Get an object name 
     Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition")) 
     Pos = InstrB(Pos,RequestBin,getByteString("name=")) 
     PosBeg = Pos+6 
     PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34))) 
     Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) 
     PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename=")) 
     PosBound = InstrB(PosEnd,RequestBin,boundary) 
     'Test if object is of file type 
     If PosFile<>0 AND (PosFile<PosBound) Then 
      'Get Filename, content-type and content of file 
      PosBeg = PosFile + 10 
      PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34))) 
      FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) 
      'Add filename to dictionary object 
      UploadControl.Add "FileName", FileName 
      Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:")) 
      PosBeg = Pos+14 
      PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13))) 
      'Add content-type to dictionary object 
      ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) 
      UploadControl.Add "ContentType",ContentType 
      'Get content of object 
      PosBeg = PosEnd+4 
      PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 
      Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg) 
      Else 
      'Get content of object 
      Pos = InstrB(Pos,RequestBin,getByteString(chr(13))) 
      PosBeg = Pos+4 
      PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 
      Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg)) 
     End If 
     'Add content to dictionary object 
    UploadControl.Add "Value" , Value 
     'Add dictionary object to main dictionary 
    UploadRequest.Add name, UploadControl 
     'Loop to next object 
     BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary) 
    Loop 

End Sub 

'String to byte string conversion 
Function getByteString(StringStr) 
For i = 1 to Len(StringStr) 
    char = Mid(StringStr,i,1) 
    getByteString = getByteString & chrB(AscB(char)) 
Next 
End Function 

'Byte string to string conversion 
Function getString(StringBin) 
getString ="" 
For intCount = 1 to LenB(StringBin) 
    getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
Next 
End Function 

0

данные являются multipart/form-data; - я использовал aspUpload прочитать переменные из формы их

Set Upload = Server.CreateObject("Persits.Upload.1") 
Upload.Save 

strEvent  = Upload.Form("event") 
sBounceEmail = Upload.Form("recipient")