英文:
How do I create a draft in Gmail using IMAP using GO
问题
我想使用GO语言创建一条新消息(特别是一条草稿),并将其存储在我的收件箱中,以便在以后的某个日期发送。使用SMTP可能行不通,但使用IMAP可能可以。我该如何操作?
英文:
I would like to use GO to create a new message (specifically a draft) that is stored in my inbox with everything ready to hit send at a later date. With SMTP I think it won't work. With IMAP maybe I can. How do I go about this?
答案1
得分: 0
package main
import (
"bytes"
"log"
"os"
"time"
"github.com/emersion/go-imap"
"github.com/emersion/go-imap/client"
)
func main() {
log.Println("连接到服务器...")
// 连接服务器
c, err := client.DialTLS(os.Getenv("IMAP_SERVER"), nil)
if err != nil {
log.Fatal(err)
}
log.Println("已连接")
// 不要忘记登出
defer c.Logout()
// 登录
if err := c.Login(os.Getenv("IMAP_USER"), os.Getenv("IMAP_PASSWORD")); err != nil {
log.Fatal(err)
}
log.Println("已登录")
// 将消息写入缓冲区
var b bytes.Buffer
b.WriteString("From: <...@gmail.com>\r\n")
b.WriteString("To: <...@gmail.com>\r\n")
b.WriteString("Subject: Append test\r\n")
b.WriteString("\r\n")
// 消息正文
b.WriteString("使用 Gmail IMAP 和草稿文件夹进行附加测试")
// 将消息附加到草稿
if err := c.Append("[Gmail]/Drafts", nil, time.Now(), &b); err != nil {
log.Fatal(err)
}
}
这是一个使用go-imap库连接到IMAP服务器并将消息附加到Gmail草稿文件夹的示例代码。你可以根据需要修改IMAP_SERVER
、IMAP_USER
和IMAP_PASSWORD
的环境变量来适应你的配置。
英文:
package main
import (
"bytes"
"log"
"os"
"time"
"github.com/emersion/go-imap"
"github.com/emersion/go-imap/client"
)
func main() {
log.Println("Connecting to server...")
// Connect to server
c, err := client.DialTLS(os.Getenv("IMAP_SERVER"), nil)
if err != nil {
log.Fatal(err)
}
log.Println("Connected")
// Don't forget to logout
defer c.Logout()
// Login
if err := c.Login(os.Getenv("IMAP_USER"), os.Getenv("IMAP_PASSWORD")); err != nil {
log.Fatal(err)
}
log.Println("Logged in")
// Write the message to a buffer
var b bytes.Buffer
b.WriteString("From: <...@gmail.com>\r\n")
b.WriteString("To: <...@gmail.com>\r\n")
b.WriteString("Subject: Append test\r\n")
b.WriteString("\r\n")
// Message body
b.WriteString("Append test using Gmail IMAP and Draft folder")
// Append it to Drafts
if err := c.Append("[Gmail]/Drafts", nil, time.Now(), &b); err != nil {
log.Fatal(err)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论