Почему я не могу отправить электронное письмо из моего приложения, которое в GCP использует Gmail SMTP? - PullRequest
0 голосов
/ 11 апреля 2019

Я разрабатываю почтовый сервис с использованием golang и включаю его в облаке Google, мое приложение не может отправлять электронную почту, когда оно размещено в gcp, но я могу сделать это локально.

Iпопробовал это раньше в localhost, и я получил успех при отправке электронного письма, но когда я запустил его на gcp, он ничего не отправлял, журнал чист, ничего об ошибке, кроме журнала успеха.Что-нибудь, что я должен настроить в gcp?

Это мой код для отправки электронного письма:

func (r *Request) SendEmail() (bool, error) {
    mime := "MIME-version: 1.0;\nContent-Type: text/html;
    charset = \"UTF-8\";\n\n"
    subject := "Subject: " + r.subject + "!\n"
    msg := []byte(subject + mime + "\n" + r.body)
    addr := "smtp.gmail.com:587"

    if err := smtp.SendMail(addr, auth, "no-reply@sample.com", r.to, msg); err != nil {
        return false, err
    }

    return true, nil
}

Я ожидаю получить сообщение от этой почтовой службы

1 Ответ

0 голосов
/ 11 апреля 2019

Вы действительно отправляете электронное письмо от no-reply@sample.com?Что ж, антиспам-фильтры Gmail поймают вас, предполагая, что приведенный выше код работает.

sample.com не имеет записей TXT (то есть для SPF) или MX, и ваш экземпляр GCE определенно не собираетсябыть просмотрено благосклонно:

$ host -t txt sample.com.
sample.com has no TXT record

$ host -t mx sample.com.
sample.com has no MX record

Если это действительно работает, оно может быть в папке спама, в лучшем случае.

Если вы отредактировали вышеуказанное электронное письмо для фрагмента кода,и вы на самом деле отправляете из домена, которым вы владеете, убедитесь, что ваши записи MX, SPF и DMARC находятся на пустом месте.В частности, ваша запись SPF должна содержать белый список IP-адреса вашего экземпляра GCE.

...