Maison >développement back-end >Golang >aller package smtp n'affiche pas le corps du message sur l'e-mail

aller package smtp n'affiche pas le corps du message sur l'e-mail

王林
王林avant
2024-02-09 23:18:091042parcourir

go 包 smtp 未在电子邮件上显示消息正文

L'éditeur PHP Zimo rappelle à tous que vous pouvez rencontrer un problème lors de l'envoi d'e-mails en utilisant le package smtp du langage Go, c'est-à-dire que le corps du message ne s'affiche pas correctement dans l'e-mail. Ce problème peut empêcher les e-mails de transmettre correctement les informations requises. Avant de résoudre ce problème, comprenons d’abord comment utiliser le package smtp et les raisons possibles.

Contenu de la question

Alors, je voulais envoyer un e-mail. L'e-mail a été envoyé avec succès dans la boîte de réception Gmail, mais le message ou le corps est manquant ou vide. Voici le code

Assistant Pack

func randomstringbytes() string {
    
    rand.seed(time.now().unixnano())
    number := []byte("0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")
    
    b := make([]byte, 6)
    
    for i := range b{
      b[i] =  number[rand.intn(len(number))] 
    }
    
      return string(b)
}
  
func sendemail(to string, code string) error {
    from := "xxx"
    password := "xxx"
    smptserver := "smtp.gmail.com:587"
    subject := "verification code"
    body := "your verification code is: "+code

    message := "from: "+ from + "\n" +
    "to: " + to + "\n" +
    "subject: " + subject + "\n" +
    body
    
    auth := smtp.plainauth("", from, password, "smtp.gmail.com")

    return smtp.sendmail(smptserver, auth, from, []string{to}, []byte(message))
}

Packmaster

func emailverify() {
    email := "xxx"
    code := helper.randomstringbytes()
    fmt.println("code:", code)
    err := helper.sendemail(email, code)
    if err != nil {
        fmt.println("error sending email:", err)
        return
    }
}

func main(){
    emailverify()
}

Dans le code suivant du package d'assistance, il existe déjà et est utilisé comme paramètre dans smtp.sendmail() mais l'e-mail n'a toujours pas de message ou est vide

message := "From: "+ from + "\n" +
    "To: " + to + "\n" +
    "Subject: " + subject + "\n" +
    body

Comment le résoudre ?

Solution

body := "Your verification code is: "+code

message := "From: "+ from + "\n" +
"To: " + to + "\n" +
"Subject: " + subject + "\n" +
body

Il doit y avoir une ligne vide entre l'en-tête du message et le corps du message, mais elle manque ici.

Certains serveurs de messagerie résoudront ce problème en ajoutant cette ligne avant tout ce qui ne ressemble pas à un en-tête, certains serveurs de messagerie résoudront ce problème d'autres manières, certains serveurs accepteront ce message tel quel, mais l'affichage sera affiché en D'une certaine manière Échec, certains serveurs refuseront d'envoyer directement cet email mal formé.

Pour plus d'informations sur l'apparence attendue des messages, voir rfc 5322.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer