rempve text body
This commit is contained in:
parent
fef0719277
commit
b34bbdff95
1 changed files with 5 additions and 53 deletions
58
main.go
58
main.go
|
@ -3,16 +3,15 @@ package main
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
"io"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/emersion/go-imap"
|
"github.com/emersion/go-imap"
|
||||||
"github.com/emersion/go-imap/client"
|
"github.com/emersion/go-imap/client"
|
||||||
"github.com/emersion/go-message/mail"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -96,22 +95,9 @@ func main() {
|
||||||
replyTo = from
|
replyTo = from
|
||||||
}
|
}
|
||||||
|
|
||||||
var bodyText string
|
|
||||||
if r := msg.GetBody(section); r != nil {
|
|
||||||
bodyBytes, err := io.ReadAll(r)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Fehler beim Lesen des Bodys: %v", err)
|
|
||||||
} else {
|
|
||||||
bodyText = extractTextFromBody(bodyBytes)
|
|
||||||
if len(bodyText) > 200 {
|
|
||||||
bodyText = bodyText[:200] + "..."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
message := fmt.Sprintf(
|
message := fmt.Sprintf(
|
||||||
"Betreff: %s\nVon: %s\nAntwort an: %s\n\n%s",
|
"Von: %s\nAntwort an: %s",
|
||||||
subject, from, replyTo, bodyText,
|
from, replyTo,
|
||||||
)
|
)
|
||||||
|
|
||||||
sendNtfyNotification(ntfyServer, ntfyTopic, ntfyUser, ntfyPass,
|
sendNtfyNotification(ntfyServer, ntfyTopic, ntfyUser, ntfyPass,
|
||||||
|
@ -133,40 +119,6 @@ func main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractTextFromBody(bodyBytes []byte) string {
|
|
||||||
r := strings.NewReader(string(bodyBytes))
|
|
||||||
mr, err := mail.CreateReader(r)
|
|
||||||
if err != nil {
|
|
||||||
return string(bodyBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
var textContent strings.Builder
|
|
||||||
|
|
||||||
for {
|
|
||||||
p, err := mr.NextPart()
|
|
||||||
if err == io.EOF {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
switch h := p.Header.(type) {
|
|
||||||
case *mail.InlineHeader:
|
|
||||||
contentType, _, _ := h.ContentType()
|
|
||||||
if contentType == "text/plain" {
|
|
||||||
partBytes, _ := io.ReadAll(p.Body)
|
|
||||||
textContent.Write(partBytes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if textContent.Len() > 0 {
|
|
||||||
return textContent.String()
|
|
||||||
}
|
|
||||||
return string(bodyBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
func sendNtfyNotification(server, topic, user, pass, title, message, replyTo string) {
|
func sendNtfyNotification(server, topic, user, pass, title, message, replyTo string) {
|
||||||
url := fmt.Sprintf("%s/%s", server, topic)
|
url := fmt.Sprintf("%s/%s", server, topic)
|
||||||
log.Printf("Sende ntfy-Benachrichtigung an %s", url)
|
log.Printf("Sende ntfy-Benachrichtigung an %s", url)
|
||||||
|
@ -175,10 +127,10 @@ func sendNtfyNotification(server, topic, user, pass, title, message, replyTo str
|
||||||
req.Header.Set("Title", title)
|
req.Header.Set("Title", title)
|
||||||
req.Header.Set("Content-Type", "text/plain")
|
req.Header.Set("Content-Type", "text/plain")
|
||||||
|
|
||||||
|
// Action-Button für Antworten
|
||||||
if replyTo != "" {
|
if replyTo != "" {
|
||||||
action := fmt.Sprintf("view, Antworten, mailto:%s", replyTo)
|
action := fmt.Sprintf("view, Antworten, mailto:%s", replyTo)
|
||||||
req.Header.Set("Actions", action)
|
req.Header.Set("Actions", action)
|
||||||
log.Printf("Füge Action-Button hinzu: %s", action)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if user != "" && pass != "" {
|
if user != "" && pass != "" {
|
||||||
|
|
Loading…
Add table
Reference in a new issue