Использовать SMTP / почтовый клиент за прокси в GO - PullRequest
0 голосов
/ 10 ноября 2018

Я использую «net / mail» и «net / smtp» для создания почтового клиента в Go, но он не работает, когда он находится за прокси-сервером.

У меня была такая же проблема для http-клиента, но она была решена с помощью &http.Transport{Proxy: http.ProxyFromEnvironment} Не удалось найти аналогичное исправление для SMTP

Приведенный ниже код работает на моем компьютере, который находится за корпоративным прокси. но если я запускаю тот же код на виртуальной машине, которая не находится за прокси-сервером, это работает.

package main

import (
    "fmt"
    "net/smtp"
)

func main() {
    fmt.Println("email sending")
    // Set up authentication information.
    auth := smtp.PlainAuth(
        "",
        "ma****017@gmail.com",
        "A***a",
        "smtp.gmail.com",
    )
    // Connect to the server, authenticate, set the sender and recipient,
    // and send the email all in one step.
    err := smtp.SendMail(
        "smtp.gmail.com:587",
        auth,
        "ma***17@gmail.com",
        []string{"chi****11@gmail.com"},
        []byte("This is the email body."),
    )
    if err != nil {
        panic(err)
    }
    fmt.Println("email sent")
}

1 Ответ

0 голосов
/ 10 декабря 2018

@ Flimzy Я новичок в сетевых вещах и да!Теперь я понимаю, что это было связано не столько с кодированием, сколько с сетевыми проблемами.

Решение, которое работало для меня, состояло в том, что я настроил postfix на прокси-машине для передачи его на SMTP-сервер Gmail.(убедитесь, что у прокси-машины есть доступ к нужному SMTP-серверу)
IP-адрес прокси-машины должен быть установлен как SMTP-хост в клиенте SMTP golang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...