Golang проверка MX-записей через файл txt
Есть файл большой mail.txt он содержит 1млн строк мне нужно отделять домены и проверять на MX-Записи доменов Выглядит он вот так:
[email protected]
А мне нужно, отрезать почту и выводить массив строк, например вот так
gazetaweb.com
у меня есть вот такой код, который проверяет мх-записи
package main
import (
"fmt"
"net"
"os"
"log"
"ioutil"
)
func ReadFileDomains() {
file, err := os.Open("mail.txt")
if err != nil {
log.Fatal(err)
}
defer func() {
if err = file.Close(); err != nil {
log.Fatal(err)
}
}()
b, err := ioutil.ReadAll(file)
fmt.Print(b)
}
func CheckEmail() {
domains := ReadFileDomains()
txtrecords, _ := net.LookupTXT(domains())
for _, txt := range txtrecords {
fmt.Println(txt)
}
}
Суть в том, что мне нужно быстро чекать домены и передать метод чтения файла доменов в net.LookupTXT(ReadFileDomains) и записать результат файла
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
в LookupTXT нужно передавать вам домен в виде строки. а для этого вам нужно сначала получить эти данные из файла. читайте, проверяйте, передаете в net.LookupTXT строку
import (
"bufio"
"fmt"
"net/mail"
"os"
"strings"
)
func ReadFileLines() []string {
lines, err := readLines("mail.txt")
if err != nil {
return []string{}
}
return lines
}
func CheckEmail() {
for _, txt := range ReadFileLines() {
_, err := mail.ParseAddress(txt)
if err != nil {
fmt.Printf("invalid address: %s\n ", txt)
continue
}
if ok, domain := check(txt); ok {
fmt.Printf("tada: %s\n", domain)
}
}
}
func check(email string) (bool, string){
at := strings.LastIndex(email, "@")
if at >= 0 {
username, domain := email[:at], email[at+1:]
fmt.Printf("Username: %s, Domain: %s\n", username, domain)
return true, domain
}
return false, ""
}
func readLines(path string) ([]string, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()
var lines []string
scanner := bufio.NewScanner(file)
for scanner.Scan() {
lines = append(lines, scanner.Text())
}
return lines, scanner.Err()
}
func main() {
CheckEmail()
}
файл mail.txt
[email protected]
[email protected]
s.ingall@google)
выхлоп:
Username: s.ingall, Domain: gazetaweb.com
tada: gazetaweb.com
Username: s.ingall, Domain: gazeb.com
tada: gazeb.com
invalid address: s.ingall@google)