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

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

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_SERVERIMAP_USERIMAP_PASSWORD的环境变量来适应你的配置。

英文:
package main

import (
	&quot;bytes&quot;
	&quot;log&quot;
	&quot;os&quot;
	&quot;time&quot;

	&quot;github.com/emersion/go-imap&quot;
	&quot;github.com/emersion/go-imap/client&quot;
)

func main() {
	log.Println(&quot;Connecting to server...&quot;)

	// Connect to server
	c, err := client.DialTLS(os.Getenv(&quot;IMAP_SERVER&quot;), nil)
	if err != nil {
		log.Fatal(err)
	}
	log.Println(&quot;Connected&quot;)

	// Don&#39;t forget to logout
	defer c.Logout()

	// Login
	if err := c.Login(os.Getenv(&quot;IMAP_USER&quot;), os.Getenv(&quot;IMAP_PASSWORD&quot;)); err != nil {
		log.Fatal(err)
	}
	log.Println(&quot;Logged in&quot;)

	// Write the message to a buffer
	var b bytes.Buffer
	b.WriteString(&quot;From: &lt;...@gmail.com&gt;\r\n&quot;)
	b.WriteString(&quot;To: &lt;...@gmail.com&gt;\r\n&quot;)
	b.WriteString(&quot;Subject: Append test\r\n&quot;)
	b.WriteString(&quot;\r\n&quot;)
	// Message body
	b.WriteString(&quot;Append test using Gmail IMAP and Draft folder&quot;)

	// Append it to Drafts
	if err := c.Append(&quot;[Gmail]/Drafts&quot;, nil, time.Now(), &amp;b); err != nil {
		log.Fatal(err)
	}

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:

确定