登录
首页 >  Golang >  Go问答

星期五九月:MIME 标头缺少冒号的格式错误

来源:stackoverflow

时间:2024-02-06 13:18:23 108浏览 收藏

从现在开始,努力学习吧!本文《星期五九月:MIME 标头缺少冒号的格式错误》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我希望你们做得很好。我有一个简单的问题。有没有办法将“星期五,九月......”放入主题或其他自定义标题中?每当我尝试读取文件时,我都会收到此错误“格式错误的 mime 标头:缺少冒号:“星期五,九月”。

我尝试手动创建另一个标头,但也许我做得不正确。也许我可以缩进这些行。知道如何从文本文件中缩进这些行吗? 谢谢!

package main

import (
    "fmt"
    "io"
    "log"
    "net/mail"
    "strings"
)


func main() {
    msg := `date: mon, 23 jun 2015 11:40:36 -0400
from: gopher <[email protected]>
to: another gopher <[email protected]>
subject: gophers at gophercon
friday, september 
 21st 
1 - 3pm 
room 32c2

message body
`

    r := strings.newreader(msg)
    m, err := mail.readmessage(r)
    if err != nil {
        log.fatal(err)
    }

    header := m.header
    fmt.println("date:", header.get("date"))
    fmt.println("from:", header.get("from"))
    fmt.println("to:", header.get("to"))
    fmt.println("subject:", header.get("subject"))

    body, err := io.readall(m.body)
    if err != nil {
        log.fatal(err)
    }
    fmt.printf("%s", body)

}
Output:
2009/11/10 23:00:00 malformed MIME header: missing colon: "Friday, September "

Program exited.

演示链接:https://go.dev/play/p/zmvuoogdfdh


正确答案


问题就在这里(错误正确地提到了 friday, september 行):

Subject: Gophers at Gophercon
Friday, September 
 21st 
1 - 3pm 
room 32c2

标题和 friday, september 行之间没有空行,因此解析器尝试将 friday, september 读取为标题行,并发出抱怨。

如果您打算将日期文本块作为电子邮件正文的一部分:在前面添加换行符

如果您打算将所有这些行作为电子邮件标题的一部分:

  • 您可以删除换行符:
    如果该标题来自代码中的其他字符串,您可以使用 str = strings.replaceall(str, "\r\n", ""),或者使用正则表达式做一些更时髦的事情

  • 或者,如果以下行以空格开头(如 RFC 5322),您可以为标题设置多行值
    例如:https://go.dev/play/p/pJLwWIffpfr

我认为 rfc 不允许 subject: 实际上包含换行符。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>