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



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

我想收到所有想联系我的人的消息,但我必须知道他们的应用程序密码也要把它放在代码中。这是不可能的。

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

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)
}
}

让我们明确一下"联系人表单"的概念。

Web站点通常提供"联系我们";功能。该网站提供了一个用户填写的联系表单。用户通常提供他/她的电子邮件地址和消息(最好是主题/主题)。

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

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

此电子邮件将包含管理员输入的消息,作为正文。主题应该包含主题作为Subject标头。此邮件将被发送到用户提供的地址。邮件将从发送到管理员的地址(或后端设置的任何电子邮件地址),但肯定是而不是。从用户提供的电子邮件)。

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

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)
}

请注意,当用户填写并提交联系表单时,后端还可以通过电子邮件通知管理员该消息。后端可以向管理员发送包含消息的电子邮件,然后回复该电子邮件的标题可以设置为用户提供的电子邮件地址。此电子邮件将由后端发送,从管理员的电子邮件地址(或任何其他地址设置在后端,但再次,不是从用户的电子邮件地址)。如果此发送给管理员的电子邮件有"回复">头设置为用户的电子邮件地址,管理员可以简单地回复邮件,并且回复将直接发送到用户的电子邮件地址。

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

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)
}

管理员在他/她自己的电子邮件客户端中阅读此消息,并点击"回复"。回复消息将直接发送给bob@gmail.com