将UAML字段的多个值解析为列表,然后在GOLANG中对其进行迭代

时间:2018-08-02 08:45:17

标签: email go yaml smtplib

我有以下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 个答案:

答案 0 :(得分:0)

您的问题似乎包含三个部分:

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)
}

2。使用range进行迭代,调用函数并处理错误的示例

// 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 package发送电子邮件

有关完整说明,请参见package example