GAE не работает для отправки почты с использованием Send Grid с использованием Java

1

Я пытаюсь отправить почту с помощью SendGrid, развернув мой код в GAE. Следующий мой код.

private static final String SMTP_HOST_NAME = "smtp.sendgrid.net";
    private static final String SMTP_AUTH_USER = "*******";
    private static final String SMTP_AUTH_PWD = "*******";
    private static final int SMTP_PORT = 2525;

    public void sendCustomer(String userName, String toEmail, int custId) {

        try {
            Properties props = new Properties();
            props.put("mail.transport.protocol", "smtp");
            props.put("mail.smtp.auth", "true");

            Authenticator auth = new SMTPAuthenticator();
            Session mailSession = Session.getDefaultInstance(props, auth);
            Transport transport = mailSession.getTransport();


            MimeMessage message = new MimeMessage(mailSession);

            Multipart multipart = new MimeMultipart("alternative");

            // Sets up the contents of the email message
            BodyPart part1 = new MimeBodyPart();

            part1.setText("Hello "
                    + userName
                    + "\n\n\n\n"
                    + "Welcome to NotionViz. You have been registered successfully in NotionViz.");

            multipart.addBodyPart(part1);
            message.setText("UTF-8", "html");
            message.setContent(multipart);
            message.setFrom(new InternetAddress(SMTP_AUTH_USER));
            message.setSubject("Customer Registration");
            InternetAddress internetAddress = null;

            try {
                internetAddress = new InternetAddress(toEmail);
                internetAddress.validate();

            } catch (Exception e) {

                System.out.println("Not a valid email address");

            }
            message.addRecipient(Message.RecipientType.TO, internetAddress);

            InternetAddress address = new InternetAddress("[email protected]");

            message.setFrom(address);

            // Sends the email
            transport.connect(SMTP_HOST_NAME, SMTP_PORT, SMTP_AUTH_USER,
                    SMTP_AUTH_PWD);
            transport.sendMessage(message,
                    message.getRecipients(Message.RecipientType.TO));
            transport.sendMessage(message,
                    message.getFrom());
            transport.close();

        } catch (Exception e) {

        }

    }

    // Authenticates to SendGrid
    class SMTPAuthenticator extends javax.mail.Authenticator {
        @Override
        public PasswordAuthentication getPasswordAuthentication() {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PWD;
            return new PasswordAuthentication(username, password);
        }
    }

Эта программа работает нормально и отправляет почту по локальной сети. Но если я развернусь в GAE и проверю, я не получаю письмо. Пожалуйста, дайте мне знать, почему GAE ограничивает отправку почты третьей стороной.

Теги:
email
google-app-engine
sendgrid

2 ответа

2

Попробуйте изменить порт, который вы используете. Вы можете нажать SendGrid через порт 587, 25 или 2525 для соединений с обычным /TLS (465, если вы собираетесь использовать SSL).

SendGrid предлагает порт 587, чтобы избежать ограничений по скорости, установленных некоторыми хостинговыми компаниями, поэтому я бы дал этот снимок.

0

В гнездах GAE предусмотрен ряд ограничений (см. Документацию по Sockets API). Прошедший проверку SMTP разрешен на порт отправки 587, поэтому вы можете использовать его, как уже было предложено LaCroixed.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню