email - 将 UAML 字段的多个值解析为列表并在 GOLANG 中对其进行迭代
问题描述
我有以下 yaml 文件:
nodes: ["1.1.1.1","127.0.0.1","2.2.2.2"]
emailto: ["sample@sample.com","sample@sample.com"]
我想打开 YAML 文件,逐个遍历 IP 并执行某些操作。如果有错误,那么它应该自动获取下一个 ip 并执行相同的功能。我在如何将 IP 保存到列表或如何在 GOLANG 中进行迭代方面遇到了麻烦。
此外,我必须根据 YAML 文件中存在的电子邮件 ID 发送电子邮件。GO 中的哪个包用于此目的,以及如何像 Python 中的 SMTPLIB 一样进行操作。
解决方案
看起来您的问题分为三个部分:
1. gopkg.in/yaml.v2
YAML解析见
import (
// ...
"gopkg.in/yaml.v2"
)
type Doc struct {
Nodes []string `yaml:"nodes"`
Emails []string `yaml:"emailto"`
}
// Parse the YAML document.
doc := Doc{}
err := yaml.Unmarshal(yamlbytes, &doc)
if err != nil {
log.Fatalf("FATAL: could not parse YAML file: %s", err)
}
range
2. 迭代使用、调用函数、处理错误的例子
// Iterate over each node and do something, handling errors as needed.
for _, node := range doc.Nodes {
err := DoSomethingWithNode(node)
if err != nil {
log.Printf("ERROR: failed to handle node %q: %s", node, err)
} else {
log.Printf("OK: successfully handled node %q.", node)
}
}
3.发送邮件见内置net/smtp
包
有关完整说明,请参见包示例。
推荐阅读
- javascript - 如何使用 Axios Post Request 传递 cookie?
- python - 如何测量图表打印所需的时间
- javascript - RangeError:toDisplayDate 的时间值无效
- firebase - 如何在 Kotlin 中将数字从 firestore 动态转换为 long 或 double?
- python - 如何使用python填充终端输入字段
- ionic-framework - Ionic Cordova App 如何在离子输入字段中禁用复制和粘贴
- google-cloud-dataflow - 数据流工作者没有旋转
- java - 使用 contactGroups.members.modify 使用 People API 向新人员添加标签时出现 500 内部服务器错误
- javascript - AXIOS 调用和渲染数据
- html - 使用 CSS 的顶部波浪 div