Open
Description
I keep getting the runtime error index out of range [1] with length 1 error when trying to use inbound parsing.
For testing to make sure it wasn't something I was doing I simplified the code quite a bit to be basically the example code.
I added some extra code to log some extra data which I have also added below.
So far the best idea I have of why it is not working is due to the headers not being formatted in a way it can handle.
apiRouter.HandleFunc("/inbound-mail", func(w http.ResponseWriter, r *http.Request) {
// Print the request headers to the console (key: value)
for key, value := range r.Header {
fmt.Println(key, ":", value)
}
// Parse the multipart form, if present
if err := r.ParseMultipartForm(32 << 20); err != nil {
log.Printf("Error parsing multipart form: %v", err)
w.WriteHeader(http.StatusBadRequest)
return
}
// Print the multipart form data
if r.MultipartForm != nil {
fmt.Println("Multipart Form Data:")
for key, values := range r.MultipartForm.Value {
for _, value := range values {
fmt.Printf("%s: %s\n", key, value)
}
}
} else {
fmt.Println("No multipart form data found")
}
// Parse the email with attachments
parsedEmail, err := inbound.ParseWithAttachments(r)
if err != nil {
log.Fatalf("Error parsing email: %v", err)
return
}
// Print the sender of the email
fmt.Println("From:", parsedEmail.Envelope.From)
// Print the email body
for i, line := range strings.Split(parsedEmail.TextBody, "\n") {
fmt.Printf("Line %d: %s\n", i, line)
}
// Respond 200 OK to indicate successful processing
w.WriteHeader(http.StatusOK)
}).Methods("POST")
2024/08/10 17:48:57 Starting server on port 9081
X-Forwarded-Proto [https]
Content-Length [3092]
Content-Type [multipart/form-data; boundary=xYzZY]
Accept-Encoding [gzip]
X-Real-Ip [167.89.*.*]
User-Agent [Sendlib/1.0]
X-Forwarded-For [167.89.*.*]
Connection [close]
Multipart Form Data:
charsets {"to":"UTF-8","from":"UTF-8","subject":"UTF-8"}
envelope {"to":["[email protected]"],"from":"[email protected]"}
sender_ip 81.169.*.*
to [email protected]
dkim none
SPF softfail
from Pieter <[email protected]>
email Received from mo4-p00-ob.smtp.rzone.de (mxd [81.169.*.*]) by mx.sendgrid.net with ESMTP id [REDACTED] for <[email protected]>; Sat, 10 Aug 2024 17:39:55.803 +0000 (UTC)
ARC-Seal i=1; a=rsa-sha256; t=1723311594; cv=none;
d=strato.com; s=strato-dkim-0002;
b=[REDACTED]
ARC-Message-Signature i=1; a=rsa-sha256; c=relaxed/relaxed; t=1723311594;
s=strato-dkim-0002; d=strato.com;
h=Message-Id:To:Subject:From:Date:Cc:Date:From:Subject:Sender;
bh=[REDACTED];
b=[REDACTED]
ARC-Authentication-Results i=1; strato.com;
arc=none;
dkim=none
X-RZG-CLASS-ID mo00
X-RZG-AUTH ":[REDACTED]"
Received from [192.168.1.140]
by smtp.strato.com (RZmta 51.1.0 AUTH)
with ESMTPSA id [REDACTED]
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
(Client did not present a certificate)
for <[email protected]>;
Sat, 10 Aug 2024 19:39:54 +0200 (CEST)
Date Sat, 10 Aug 2024 19:39:48 +0200
From Pieter <[email protected]>
Subject Test
To [email protected]
Message-Id <[email protected]>
X-Mailer geary/46.0
MIME-Version 1.0
Content-Type multipart/alternative; boundary="=-4eyqa2TrTXct6OapdPpZ"
Content-Transfer-Encoding 7bit
--=-4eyqa2TrTXct6OapdPpZ
Content-Type text/plain; charset=us-ascii; format=flowed
Test Message
--=-4eyqa2TrTXct6OapdPpZ
Content-Type text/html; charset=us-ascii
<div id="geary-body" dir="auto"><div>Test Message</div></div>
--=-4eyqa2TrTXct6OapdPpZ--
subject Test
2024/08/10 17:48:59 http panic serving 127.0.0.1:59604 runtime error index out of range [1] with length 1
goroutine 52 [running]:
net/http.(*conn).serve.func1()
/usr/local/go/src/net/http/server.go:1850 +0xbf
panic({0x9203c0, 0xc0000262b8})
/usr/local/go/src/runtime/panic.go:890 +0x262
github.com/sendgrid/sendgrid-go/helpers/inbound.(*ParsedEmail).parseRawEmail(0xc0005f0400, {0xc00027ea80?, 0x950a6f?})
/go/pkg/mod/github.com/sendgrid/[email protected]+incompatible/helpers/inbound/inbound.go:165 +0x4d4
github.com/sendgrid/sendgrid-go/helpers/inbound.(*ParsedEmail).parse(0xc0005f0400)
/go/pkg/mod/github.com/sendgrid/[email protected]+incompatible/helpers/inbound/inbound.go:121 +0x3d6
github.com/sendgrid/sendgrid-go/helpers/inbound.ParseWithAttachments(0xc0002c2200)
/go/pkg/mod/github.com/sendgrid/[email protected]+incompatible/helpers/inbound/inbound.go:79 +0x139
mailProcessor/routes.ApiRoutes.func1({0xa248d8, 0xc0005b4540}, 0xc0002c2200)
/builds/LeSqueed/gomailprocessor/routes/api.go:51 +0x310
net/http.HandlerFunc.ServeHTTP(0xc0002c2100?, {0xa248d8?, 0xc0005b4540?}, 0x800?)
/usr/local/go/src/net/http/server.go:2109 +0x2f
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000508c00, {0xa248d8, 0xc0005b4540}, 0xc0002c2000)
/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:212 +0x1cf
net/http.serverHandler.ServeHTTP({0xa237a8?}, {0xa248d8, 0xc0005b4540}, 0xc0002c2000)
/usr/local/go/src/net/http/server.go:2947 +0x30c
net/http.(*conn).serve(0xc0001a80a0, {0xa25120, 0xc000206480})
/usr/local/go/src/net/http/server.go:1991 +0x607
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3102 +0x4db
I tried mutliple things, including downgrading to Go 1.19.
Also tried sending mail from either the webmail or an gmail account, but non of them are getting processed correctly.
Metadata
Metadata
Assignees
Labels
No labels