golang命令行检查Yopmail邮件插件库yogo的使用
Golang命令行检查Yopmail邮件插件库yogo的使用
安装
可以通过以下方式安装yogo:
- 下载二进制文件
- 运行命令:
go install github.com/antham/yogo/v4@latest
- Archlinux用户可以通过AUR包安装
基本用法
yogo提供以下命令:
Check yopmail mails from command line.
Usage:
yogo [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
inbox Handle inbox messages
version App version
Flags:
--debug Log all requests/responses
-h, --help help for yogo
--json Dump the output as json
Use "yogo [command] --help" for more information about a command.
⚠️ 注意:执行过多调用会触发验证码(CAPTCHA),需要通过浏览器解决。建议添加延迟以防止这种情况。
环境变量
可以通过以下环境变量自定义yogo的行为:
名称 | 默认值 | 用途 |
---|---|---|
HTTP_PROXY |
空 | 定义HTTP代理 |
HTTPS_PROXY |
空 | 定义HTTPS代理 |
YOGO_USER_AGENT |
参见client.go中的defaultUserAgent 常量 |
用于执行请求的用户代理 |
YOGO_REQUEST_TIMEOUT |
10 | 请求超时时间(秒) |
使用示例
列出邮件
获取test1@yopmail.com邮箱的10封邮件:
yogo inbox list test1 10
清空收件箱
清空test1@yopmail.com邮箱:
yogo inbox flush test1
阅读邮件
读取helloworld@yopmail.com邮箱的第一封邮件:
yogo inbox show helloworld 1
读取第二封邮件:
yogo inbox show helloworld 2
查看邮件源码和完整头信息
查看helloworld@yopmail.com邮箱第一封邮件的源码:
yogo inbox source helloworld 1
删除邮件
删除helloworld@yopmail.com邮箱的第一封邮件:
yogo inbox delete helloworld 1
标志选项
- 使用
--json
标志可以获取JSON格式的输出 - 如果yogo出现问题,可以使用
--debug
标志记录请求/响应日志
完整Golang示例
以下是一个使用yogo库的完整Golang示例:
package main
import (
"fmt"
"log"
"os"
"github.com/antham/yogo/v4/inbox"
)
func main() {
// 创建收件箱客户端
client := inbox.NewClient()
// 列出test1@yopmail.com邮箱的10封邮件
emails, err := client.List("test1", 10)
if err != nil {
log.Fatalf("Failed to list emails: %v", err)
}
// 打印邮件列表
fmt.Println("Email list:")
for i, email := range emails {
fmt.Printf("%d. From: %s, Subject: %s\n", i+1, email.From, email.Subject)
}
// 读取第一封邮件
if len(emails) > 0 {
email, err := client.Show("test1", 1)
if err != nil {
log.Fatalf("Failed to show email: %v", err)
}
fmt.Printf("\nFirst email content:\n%s\n", email.Body)
}
// 删除第一封邮件
err = client.Delete("test1", 1)
if err != nil {
log.Printf("Failed to delete email: %v", err)
} else {
fmt.Println("\nFirst email deleted successfully")
}
}
这个示例演示了如何:
- 创建yogo收件箱客户端
- 列出指定邮箱的邮件
- 读取特定邮件内容
- 删除邮件
注意:实际使用时需要处理错误和边界情况。
更多关于golang命令行检查Yopmail邮件插件库yogo的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang命令行检查Yopmail邮件插件库yogo的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用Yogo库检查Yopmail邮件的Golang实现
Yopmail是一个提供临时邮箱服务的网站,常用于测试和临时注册场景。在Golang中,可以使用yogo
库来检查Yopmail邮箱中的邮件。下面我将详细介绍如何使用这个库。
安装yogo库
首先需要安装yogo库:
go get github.com/guelfey/yogo
基本使用方法
package main
import (
"fmt"
"log"
"time"
"github.com/guelfey/yogo"
)
func main() {
// 1. 创建Yogo客户端
client := yogo.NewClient()
// 2. 设置要检查的邮箱地址 (不需要@yopmail.com后缀)
mailbox := "test123"
// 3. 获取邮箱中的邮件列表
emails, err := client.GetEmails(mailbox)
if err != nil {
log.Fatalf("获取邮件失败: %v", err)
}
// 4. 打印邮件信息
fmt.Printf("邮箱 %s@yopmail.com 中共有 %d 封邮件:\n", mailbox, len(emails))
for i, email := range emails {
fmt.Printf("\n邮件 #%d:\n", i+1)
fmt.Printf("发件人: %s\n", email.From)
fmt.Printf("主题: %s\n", email.Subject)
fmt.Printf("日期: %s\n", email.Date.Format(time.RFC1123))
fmt.Printf("内容预览: %.50s...\n", email.Body)
}
}
高级功能示例
1. 获取特定邮件内容
func getEmailContent(mailbox, emailID string) {
client := yogo.NewClient()
// 获取完整邮件内容
content, err := client.GetEmailContent(mailbox, emailID)
if err != nil {
log.Fatalf("获取邮件内容失败: %v", err)
}
fmt.Printf("邮件内容:\n%s\n", content)
}
2. 等待特定主题的邮件
func waitForEmailWithSubject(mailbox, subject string, timeout time.Duration) {
client := yogo.NewClient()
start := time.Now()
for time.Since(start) < timeout {
emails, err := client.GetEmails(mailbox)
if err != nil {
log.Printf("获取邮件失败: %v", err)
time.Sleep(5 * time.Second)
continue
}
for _, email := range emails {
if email.Subject == subject {
fmt.Printf("找到匹配邮件: %s\n", subject)
return
}
}
time.Sleep(10 * time.Second)
}
log.Fatalf("在 %v 内未找到主题为 '%s' 的邮件", timeout, subject)
}
3. 删除所有邮件
func deleteAllEmails(mailbox string) {
client := yogo.NewClient()
emails, err := client.GetEmails(mailbox)
if err != nil {
log.Fatalf("获取邮件失败: %v", err)
}
for _, email := range emails {
err := client.DeleteEmail(mailbox, email.ID)
if err != nil {
log.Printf("删除邮件 %s 失败: %v", email.ID, err)
} else {
fmt.Printf("已删除邮件: %s\n", email.Subject)
}
}
}
注意事项
- Yopmail邮箱如果没有活动,大约会在8天后自动删除
- 频繁请求可能会导致临时封禁,建议在请求之间添加适当的延迟
- 该库依赖于Yopmail网站的HTML结构,如果网站改版可能需要更新库
- 对于生产环境,建议使用更可靠的邮件服务而非临时邮箱
完整示例程序
package main
import (
"fmt"
"log"
"time"
"github.com/guelfey/yogo"
)
func main() {
// 配置参数
mailbox := "test123"
expectedSubject := "验证邮件"
timeout := 5 * time.Minute
client := yogo.NewClient()
// 1. 检查邮箱初始状态
initialEmails, err := client.GetEmails(mailbox)
if err != nil {
log.Fatalf("初始获取邮件失败: %v", err)
}
fmt.Printf("初始邮件数量: %d\n", len(initialEmails))
// 2. 等待特定邮件
fmt.Printf("等待主题为 '%s' 的邮件...\n", expectedSubject)
start := time.Now()
var targetEmail *yogo.Email
for time.Since(start) < timeout {
emails, err := client.GetEmails(mailbox)
if err != nil {
log.Printf("获取邮件失败: %v", err)
time.Sleep(5 * time.Second)
continue
}
for _, email := range emails {
if email.Subject == expectedSubject {
targetEmail = &email
break
}
}
if targetEmail != nil {
break
}
time.Sleep(10 * time.Second)
}
if targetEmail == nil {
log.Fatalf("在 %v 内未找到目标邮件", timeout)
}
// 3. 获取并显示邮件内容
fmt.Printf("\n找到目标邮件:\n")
fmt.Printf("发件人: %s\n", targetEmail.From)
fmt.Printf("主题: %s\n", targetEmail.Subject)
fmt.Printf("日期: %s\n", targetEmail.Date.Format(time.RFC1123))
content, err := client.GetEmailContent(mailbox, targetEmail.ID)
if err != nil {
log.Fatalf("获取邮件内容失败: %v", err)
}
fmt.Printf("\n邮件内容:\n%s\n", content)
// 4. 清理邮箱
fmt.Println("\n清理邮箱...")
deleteAllEmails(client, mailbox)
}
func deleteAllEmails(client *yogo.Client, mailbox string) {
emails, err := client.GetEmails(mailbox)
if err != nil {
log.Printf("获取邮件失败: %v", err)
return
}
for _, email := range emails {
err := client.DeleteEmail(mailbox, email.ID)
if err != nil {
log.Printf("删除邮件 %s 失败: %v", email.ID, err)
} else {
fmt.Printf("已删除邮件: %s\n", email.Subject)
}
}
}
以上代码展示了如何使用yogo库检查Yopmail邮箱中的邮件,包括等待特定邮件、获取邮件内容和清理邮箱等功能。根据你的具体需求,可以调整这些代码片段。