GoLang:在没有 Mailjet 库的情况下发送 Mailjet 电子邮件
GoLang: Send Mailjet email without Mailjet library
我正在尝试使用我的 Mailjet 凭据从我的 golang 应用程序发送电子邮件,但我正在尝试以正常的 golang 方式发送电子邮件(是的,我知道他们的图书馆受到高度鼓励)。
我使用 Mailjet 库可以很好地处理电子邮件,但我的老板提出了一个非常好的观点,我们可能不会永远使用 Mailjet。如果我们切换到不同的电子邮件解决方案,我们不想重写我们所有的电子邮件代码,我们只想更改我们的主机名和凭据。
我的打印机使用相同的主机名和凭据发送刚刚通过 Mailjet 找到的电子邮件,但出于某种原因我的 golang 应用程序不会!
我的代码是从 golang smtp library SendEmail example 中采用的。
这是(当然没有我的凭据):
import (
"bytes"
"fmt"
"net/smtp"
)
func SendTestEmail() (bool, error) {
fmt.Println("Send Test Email: Enter")
success := false
hostname := "in-v3.mailjet.com"
auth := smtp.PlainAuth("", username, password, hostname)
to := []string{"me@example.com"}
msg := []byte("To: me@example.com\r\n" +
"Subject: discount Gophers!\r\n" +
"\r\n" +
"This is the email body.\r\n")
fmt.Println("Send Test Email: Sending Email")
err := smtp.SendMail(hostname+":587", auth, "sender@example.com", to, msg)
if err == nil {
fmt.Println("Send Test Email: Email successfully sent!")
success = true
} else {
fmt.Println("Send Test Email: Email failed to send", err)
}
fmt.Println("Send Test Email: Exit")
return success, err
}
请注意,我使用的是端口 587。我不知道我的打印机使用的是 587 还是 25,但它可以正常工作。我用25端口也不行
真正奇怪的是 smtp.SendEmail
没有返回任何错误,但我仍然没有收到任何电子邮件(是的,我正在检查我的垃圾文件夹)!
此外,当我登录 Mailjet 时,我没有看到任何电子邮件已发送。当我从打印机发送内容时,我确实看到发送了一封电子邮件。
那么,我的电子邮件在哪里?!
非常感谢任何帮助。谢谢!
首先,感谢您选择 Mailjet 作为您的电子邮件服务提供商!我在 Mailjet 领导 API 产品和开发人员关系。
说到发送,您使用 SMTP 是对的。它是标准的、广泛支持的并且易于切换(即使我不希望我们能做到这一点!)。我们的 Go library 将在处理我们的 API 管理业务流程时变得得心应手。
我在查看您的代码时有几个问题/反馈:
- 我猜 "sender@example.com" 来自使用的地址不是您在实际代码中使用的地址?无论如何,这封电子邮件必须事先在 Mailjet 方面进行了验证。查看我们的 dedicated guide
- 似乎您尝试在邮件中设置一些 SMTP headers 之类的主题,但应该单独处理
这是我用来处理 SMTP 的工作代码:
package main
import (
"log"
"net/smtp"
"fmt"
)
func main() {
auth := smtp.PlainAuth(
"",
"MAILJET_API_KEY",
"MAILJET_API_SECRET",
"in-v3.mailjet.com",
)
email := "foobar@test.com"
header := make(map[string]string)
header["From"] = email
header["To"] = email
header["Subject"] = "Hello Mailjet World!"
header["X-Mailjet-Campaign"] = "test"
message := ""
for k, v := range header {
message += fmt.Sprintf("%s: %s\r\n", k, v)
}
message += "\r\nHi! Thanks for using Mailjet."
err := smtp.SendMail(
"in-v3.mailjet.com:587",
auth,
email,
[]string{email},
[]byte(message),
)
if err != nil {
log.Printf("Error: %s", err)
} else {
log.Printf("Mail sent!")
}
}
希望对您有所帮助! hAPI 使用 Mailjet
发送
我正在尝试使用我的 Mailjet 凭据从我的 golang 应用程序发送电子邮件,但我正在尝试以正常的 golang 方式发送电子邮件(是的,我知道他们的图书馆受到高度鼓励)。
我使用 Mailjet 库可以很好地处理电子邮件,但我的老板提出了一个非常好的观点,我们可能不会永远使用 Mailjet。如果我们切换到不同的电子邮件解决方案,我们不想重写我们所有的电子邮件代码,我们只想更改我们的主机名和凭据。
我的打印机使用相同的主机名和凭据发送刚刚通过 Mailjet 找到的电子邮件,但出于某种原因我的 golang 应用程序不会!
我的代码是从 golang smtp library SendEmail example 中采用的。
这是(当然没有我的凭据):
import (
"bytes"
"fmt"
"net/smtp"
)
func SendTestEmail() (bool, error) {
fmt.Println("Send Test Email: Enter")
success := false
hostname := "in-v3.mailjet.com"
auth := smtp.PlainAuth("", username, password, hostname)
to := []string{"me@example.com"}
msg := []byte("To: me@example.com\r\n" +
"Subject: discount Gophers!\r\n" +
"\r\n" +
"This is the email body.\r\n")
fmt.Println("Send Test Email: Sending Email")
err := smtp.SendMail(hostname+":587", auth, "sender@example.com", to, msg)
if err == nil {
fmt.Println("Send Test Email: Email successfully sent!")
success = true
} else {
fmt.Println("Send Test Email: Email failed to send", err)
}
fmt.Println("Send Test Email: Exit")
return success, err
}
请注意,我使用的是端口 587。我不知道我的打印机使用的是 587 还是 25,但它可以正常工作。我用25端口也不行
真正奇怪的是 smtp.SendEmail
没有返回任何错误,但我仍然没有收到任何电子邮件(是的,我正在检查我的垃圾文件夹)!
此外,当我登录 Mailjet 时,我没有看到任何电子邮件已发送。当我从打印机发送内容时,我确实看到发送了一封电子邮件。
那么,我的电子邮件在哪里?!
非常感谢任何帮助。谢谢!
首先,感谢您选择 Mailjet 作为您的电子邮件服务提供商!我在 Mailjet 领导 API 产品和开发人员关系。
说到发送,您使用 SMTP 是对的。它是标准的、广泛支持的并且易于切换(即使我不希望我们能做到这一点!)。我们的 Go library 将在处理我们的 API 管理业务流程时变得得心应手。
我在查看您的代码时有几个问题/反馈:
- 我猜 "sender@example.com" 来自使用的地址不是您在实际代码中使用的地址?无论如何,这封电子邮件必须事先在 Mailjet 方面进行了验证。查看我们的 dedicated guide
- 似乎您尝试在邮件中设置一些 SMTP headers 之类的主题,但应该单独处理
这是我用来处理 SMTP 的工作代码:
package main
import (
"log"
"net/smtp"
"fmt"
)
func main() {
auth := smtp.PlainAuth(
"",
"MAILJET_API_KEY",
"MAILJET_API_SECRET",
"in-v3.mailjet.com",
)
email := "foobar@test.com"
header := make(map[string]string)
header["From"] = email
header["To"] = email
header["Subject"] = "Hello Mailjet World!"
header["X-Mailjet-Campaign"] = "test"
message := ""
for k, v := range header {
message += fmt.Sprintf("%s: %s\r\n", k, v)
}
message += "\r\nHi! Thanks for using Mailjet."
err := smtp.SendMail(
"in-v3.mailjet.com:587",
auth,
email,
[]string{email},
[]byte(message),
)
if err != nil {
log.Printf("Error: %s", err)
} else {
log.Printf("Mail sent!")
}
}
希望对您有所帮助! hAPI 使用 Mailjet
发送