email - 将 UAML 字段的多个值解析为列表并在 GOLANG 中对其进行迭代

标签 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。参见 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以获得完整的说明。

关于email - 将 UAML 字段的多个值解析为列表并在 GOLANG 中对其进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649304/

相关文章:

html - 强制 Thunderbird 中的 html 电子邮件在容器中 float 元素

android - 如何发送 HTML 电子邮件

concurrency - 使用共享 map 的不错的惯用方式

loops - 在 GO 模板中使用 range over struct

PHP 邮件停止工作

php - Laravel 5 SwiftMailer 的发送 : how to get error code

Golang 结构数组不工作

go - Golang 上的包导入错误

python - 如何使用 ruamel.yaml 添加评论

symfony - 如何配置 Doctrine 以在 Symfony 4 上使用 yaml 映射