如何接收所有填写联系表的人的消息?

How to receive messages from all the people who fill the contact form?

我有一个联系表,我通过它接收消息。但它只从一个电子邮件地址收到,因为我只在 abc.SetHeader("To", "email2@gmail.com").

中提供了该电子邮件地址

我想收到所有想联系我的人的消息,但我还必须知道他们的应用程序密码才能将其放入代码中。这不会发生。

这就是为什么我在我的 Gmail 帐户的 Reply-To 部分提供了我的另一个电子邮件地址以使其工作,但它仍然不起作用。 接下来我应该怎么做才能让它发挥作用?

package main

import (
    "log"

    "gopkg.in/gomail.v2"
)

func main() {
    abc := gomail.NewMessage()

    abc.SetHeader("From", "email1@gamil.com")
    abc.SetHeader("To", "email2@gmail.com")
    abc.SetHeader("Subject", "This is the subject")
    abc.SetBody("text/plain", "This is the message")

    a := gomail.NewDialer("smtp.gmail.com", 587, "email1@gmail.com", "app password") // Password for "email1@gmail.com"
    if err := a.DialAndSend(abc); err != nil {
        log.Fatal(err)
    }
}

让我们弄清楚“联系方式”的概念。

网站通常提供“联系我们”功能。该网站显示了用户填写的联系表格。用户通常会提供 his/her 电子邮件地址和消息(最好是主题/主题)。

提交后,后端将此消息保存在 webapps 自己的数据库中。

当管理员(或适当的人)阅读邮件(在受限页面中)时,管理员可以决定回复此邮件。由于用户在提交联系表格时提供了 his/her 电子邮件地址,因此可能会通过电子邮件进行回复。管理员可以填写包含回复消息的表格(最好也引用原始消息),当管理员提交此表格时,后端可以向用户提供的地址发送电子邮件(在提交联系表格时)。

此电子邮件将包含管理员作为 body 输入的消息。主题应包含联系表中的 主题 作为主题 header。此电子邮件将发送到 用户提供的地址。电子邮件将从管理员地址(或后台设置的任何电子邮件地址,但肯定不是用户)。

管理员发送回复邮件的例子(从后台):

m := gomail.NewMessage()
m.SetHeader("From", "admin@mywebapp.com")
m.SetHeader("To", "bob@gmail.com")
m.SetHeader("Subject", "Re: Issue with purchase")
m.SetBody("text/plain", "Hello Bob! We fixed the issue!")

d := gomail.NewDialer("smtp.mywebapp.com", 587, "admin", "admin's password")

if err := d.DialAndSend(m); err != nil {
    panic(err)
}

请注意,当用户填写并提交联系表格时,后端也可能会通过电子邮件将消息通知管理员。后端可以向管理员发送一封包含消息的电子邮件,并且该电子邮件的 “回复” header 可以设置为由管理员提供的电子邮件地址用户。该电子邮件将由后端从管理员的电子邮件地址(或在后端设置的任何其他地址,但同样不是来自用户的电子邮件地址)发送。如果发送给管理员的这封电子邮件将 “回复” header 设置为用户的电子邮件地址,则管理员可以简单地回复该电子邮件,回复将直接发送到用户的电子邮件地址。

发送给管理员的关于“联系表单”提交的电子邮件示例(由后端发送):

m := gomail.NewMessage()
m.SetHeader("From", "admin@mywebapp.com")
m.SetHeader("To", "admin@mywebapp.com")
m.SetHeader("Reply-To", "bob@gmail.com")
m.SetHeader("Subject", "Issue with purchase")
m.SetBody("text/plain", "Hi, I'm bob. I have this XXX issue when purchasing.")

d := gomail.NewDialer("smtp.mywebapp.com", 587, "admin", "admin's password")

if err := d.DialAndSend(m); err != nil {
    panic(err)
}

管理员在 his/her 自己的电子邮件客户端中阅读此消息,然后点击“回复”。回复消息将直接转到 bob@gmail.com.