Электронная почта движка приложения. Он говорит, что отправляет, но я не получаю его - PullRequest
0 голосов
/ 25 апреля 2020

Я делаю функцию уведомлений на мой сайт. Я пользуюсь почтой движка приложения, и пока она регистрирует сообщение о том, что письмо было отправлено, как показано ниже, я никогда не получаю его Журналы:

INFO: MailService.send
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   From: noreply@myapp.appspotmail.com
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   To: emailTest@gmail.com
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   Reply-to: noreply@myapp.appspotmail.com
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   Subject: 
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:   Body:
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:     Content-type: text/html
abr 25, 2020 6:26:44 PM com.google.appengine.api.mail.dev.LocalMailService log
INFO:     Data length: 2795

Вот мой код java, куда я отправляю электронное письмо. Я использую html файл из облачного хранилища, который загружается. Когда я log.info (данные) он распечатывает весь файл.

public void confirmationEmail(String name, String email, String lang) {
        Session session = Session.getDefaultInstance(new Properties(), null);
        try {
            Message msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(email("noreply")));
            msg.addRecipient(TO, new InternetAddress(email));
            msg.setSubject(lang.equalsIgnoreCase(Constants.Languages.EN) ? CONFIRMATION_EN : CONFIRMATION_PT);
            String data = new String(CloudStorage.getPrivate(String.format("confirmation-%s.html", lang), CloudStorageFolder.SYSTEM), StandardCharsets.UTF_8);
            data.replace("$name", name);
            Multipart multi = new MimeMultipart();
            MimeBodyPart html = new MimeBodyPart();
            html.setContent(data, "text/html");
            multi.addBodyPart(html);
            msg.setContent(multi);
            log.info(data);
            Transport.send(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

1 Ответ

0 голосов
/ 04 мая 2020

Почтовый API App Engine для Java устарел. Вам следует попробовать использовать сторонний API, такой как SendGrid

Вот пример того, как отправить письмо с SendGrid и Java:

import com.sendgrid.*;
import java.io.IOException;

public class Example {
  public static void main(String[] args) throws IOException {
    Email from = new Email("test@example.com");
    String subject = "Sending with SendGrid is Fun";
    Email to = new Email("test@example.com");
    Content content = new Content("text/plain", "and easy to do anywhere, even with Java");
    Mail mail = new Mail(from, subject, to, content);

    SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
    Request request = new Request();
    try {
      request.setMethod(Method.POST);
      request.setEndpoint("mail/send");
      request.setBody(mail.build());
      Response response = sg.api(request);
      System.out.println(response.getStatusCode());
      System.out.println(response.getBody());
      System.out.println(response.getHeaders());
    } catch (IOException ex) {
      throw ex;
    }
  }
}

Также всегда проверьте свой почтовый ящик для спама.

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