То, что вы делаете в TrustManager, эффективно отключает необходимую проверку (проверку сертификата сервера), которая делает соединение SSL / TLS безопасным.Я был бы очень удивлен, если бы у GMail не было сертификата, выданного CA, который находится в хранилище доверенных сертификатов по умолчанию.Вам не нужно изменять какие-либо настройки доверия.
Проблема, по-видимому, связана с использованием STARTTLS
, который является командой SMTP (поэтому вам может потребоваться больше узнать об этом вСпецификация SMTP.
Существует два способа включения SSL / TLS в SMTP-соединениях, как описано здесь , хотя они часто плохо маркируются (некоторые называют «TLS» тем, что есть на самом деле «using STARTTLS "):
Один из них" подключен "или" заранее "(я не уверен, существует ли стандартная терминология для этого).В этом случае вы устанавливаете соединение SSL или TLS перед обменом любым SMTP-сообщением.Как правило, это порт 465 для SMTP.
Другой - это переключение на TLS (хотя иногда он действительно работает и с SSLv3) во время обмена SMTP с использованием STARTTLS
команда.Здесь клиент начинает общаться с сервером в виде простого текста с помощью SMTP-команд, но затем отправляет команду STARTTLS
и инициирует квитирование TLS, чтобы превратить обычный сокет в SSL / TLS.Это может быть для портов 25 или 587. Для SMTP.
Насколько я знаю, Gmail поддерживает оба .
Если вы неслишком хорошо знакомый с рукопожатиями TLS и превращением простого сокета в сокет SSL / TLS (например, с Channel
s и SSLEngine
), вероятно, проще использовать первый метод: SSL / TLS при подключении.В этом случае просто используйте SSLSocket
и SSLSocketFactory
для инициации соединения.После этого вам не нужно использовать STARTTLS
(как часть протокола SMTP), поскольку вы уже будете использовать SSL / TLS.