使用GO语言如何通过IMAP在Gmail中创建草稿?

huangapple go评论115阅读模式
英文:

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

  1. package main
  2. import (
  3. "bytes"
  4. "log"
  5. "os"
  6. "time"
  7. "github.com/emersion/go-imap"
  8. "github.com/emersion/go-imap/client"
  9. )
  10. func main() {
  11. log.Println("连接到服务器...")
  12. // 连接服务器
  13. c, err := client.DialTLS(os.Getenv("IMAP_SERVER"), nil)
  14. if err != nil {
  15. log.Fatal(err)
  16. }
  17. log.Println("已连接")
  18. // 不要忘记登出
  19. defer c.Logout()
  20. // 登录
  21. if err := c.Login(os.Getenv("IMAP_USER"), os.Getenv("IMAP_PASSWORD")); err != nil {
  22. log.Fatal(err)
  23. }
  24. log.Println("已登录")
  25. // 将消息写入缓冲区
  26. var b bytes.Buffer
  27. b.WriteString("From: <...@gmail.com>\r\n")
  28. b.WriteString("To: <...@gmail.com>\r\n")
  29. b.WriteString("Subject: Append test\r\n")
  30. b.WriteString("\r\n")
  31. // 消息正文
  32. b.WriteString("使用 Gmail IMAP 和草稿文件夹进行附加测试")
  33. // 将消息附加到草稿
  34. if err := c.Append("[Gmail]/Drafts", nil, time.Now(), &b); err != nil {
  35. log.Fatal(err)
  36. }
  37. }

这是一个使用go-imap库连接到IMAP服务器并将消息附加到Gmail草稿文件夹的示例代码。你可以根据需要修改IMAP_SERVERIMAP_USERIMAP_PASSWORD的环境变量来适应你的配置。

英文:
  1. package main
  2. import (
  3. &quot;bytes&quot;
  4. &quot;log&quot;
  5. &quot;os&quot;
  6. &quot;time&quot;
  7. &quot;github.com/emersion/go-imap&quot;
  8. &quot;github.com/emersion/go-imap/client&quot;
  9. )
  10. func main() {
  11. log.Println(&quot;Connecting to server...&quot;)
  12. // Connect to server
  13. c, err := client.DialTLS(os.Getenv(&quot;IMAP_SERVER&quot;), nil)
  14. if err != nil {
  15. log.Fatal(err)
  16. }
  17. log.Println(&quot;Connected&quot;)
  18. // Don&#39;t forget to logout
  19. defer c.Logout()
  20. // Login
  21. if err := c.Login(os.Getenv(&quot;IMAP_USER&quot;), os.Getenv(&quot;IMAP_PASSWORD&quot;)); err != nil {
  22. log.Fatal(err)
  23. }
  24. log.Println(&quot;Logged in&quot;)
  25. // Write the message to a buffer
  26. var b bytes.Buffer
  27. b.WriteString(&quot;From: &lt;...@gmail.com&gt;\r\n&quot;)
  28. b.WriteString(&quot;To: &lt;...@gmail.com&gt;\r\n&quot;)
  29. b.WriteString(&quot;Subject: Append test\r\n&quot;)
  30. b.WriteString(&quot;\r\n&quot;)
  31. // Message body
  32. b.WriteString(&quot;Append test using Gmail IMAP and Draft folder&quot;)
  33. // Append it to Drafts
  34. if err := c.Append(&quot;[Gmail]/Drafts&quot;, nil, time.Now(), &amp;b); err != nil {
  35. log.Fatal(err)
  36. }

huangapple
  • 本文由 发表于 2022年7月27日 02:26:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/73128155.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定