smtp.Dial ئۇنىڭ ئادرېسىغا يېڭى ئۇلىنىش ئاچىدۇ. HTTP CONNECT proxy ئارقىلىق ئۇلىنىش تاپقاندىن كېيىن، شۇ مەۋجۇت ئېقىمنى بۇنىڭ ئورنىغا smtp.NewClient غا تاپشۇرۇڭ.

تاپشۇرۇش پورتىدا STARTTLS تەلەپ قىلىدىغان SMTP مۇلازىمېتىرى ئۈچۈن، تاپشۇرۇش مۇنداق بولۇشى مۇمكىن:

func smtpOverTunnel(conn net.Conn, mailHost string) (*smtp.Client, error) {
    client, err := smtp.NewClient(conn, mailHost)
    if err != nil {
        conn.Close()
        return nil, err
    }
    err = client.StartTLS(&tls.Config{
        ServerName: mailHost,
        MinVersion: tls.VersionTLS12,
    })
    if err != nil {
        client.Close()
        return nil, err
    }
    return client, nil
}

بوغچىلار net، net/smtp ۋە crypto/tls. چاقىرغۇچى نىشانلىق SMTP مۇلازىمېتىرى ۋە پورتىغا ئاللىبۇرۇن ئۇلانغان تونېلنى تەمىنلەيدۇ، proxy نىڭ CONNECT ئالماشتۇرۇشى تاماملانغان. proxy غا پەقەت TCP ئېچىش يېتەرلىك ئەمەس: HTTP ئىنكاسى SMTP سالامى ئەمەس.

mailHost SMTP مۇلازىمېتىرىنىڭ ئىسمى، پورتسىز. بۇ كىملىكنى SMTP دەلىللەش ۋە گۇۋاھنامە تەكشۈرۈش ئۈچۈن ساقلاڭ. HTTPS proxy غا TLS ئۇلىنىشى يولنىڭ باشقا بىر بۆلىكىنى قوغدايدۇ.

قايتۇرۇلغان خېرىدار ئەپنىڭ مەۋجۇت SMTP دەلىللىشى ۋە خەت سودىسىغا تەييار. تۈگەتكەندە ئۇنى تاقاڭ. تېلېفون قىلىش، CONNECT ۋە كېيىنكى پروتوكول مەشغۇلاتلىرىنى ئەپنىڭ مۇددەت سىياسىتى بىلەن چەكلەڭ.

proxy تاللانغان خەت پورتىغا CONNECT غا رۇخسەت قىلىشى كېرەك. بەزىلىرى ئۇنى 443 پورتىدىكى HTTPS نىشانلىرى بىلەن چەكلەيدۇ. يوشۇرۇن TLS لىق SMTP ئۈچۈن STARTTLS چىقىرىشنىڭ ئورنىغا NewClient نى چاقىرىشتىن ئىلگىرى نىشاننىڭ TLS سېسسىيەسىنى قۇرۇڭ.

مۇناسىۋەتلىك ماقالىلەر