Когда класс загружается впервые, выполняется код внутри блока статического инициализатора .
static {
fetchConfig();
}
Вы увидите, что он вызывает метод fetchConfig()
, который затем загружает fMailServerConfig
properties.
private static Properties fMailServerConfig = new Properties();
private static void fetchConfig() {
// ...[omitted stuff]...
input = new FileInputStream( "C:\\Temp\\MyMailServer.txt" );
fMailServerConfig.load( input );
// ...[omitted stuff]...
}
Обратите внимание, что метод fetchConfig()
имеет значение static
- он вызывается из статического инициализатора, поэтому он должен быть статическим, поскольку на самом деле еще нет экземпляра класса,Кроме того, мы, вероятно, будем использовать одну и ту же конфигурацию для всех экземпляров, поэтому нет необходимости для каждого экземпляра иметь свою собственную конфигурацию.
Также обратите внимание, что метод private
, потому что мы не хотим, чтобы методбыть вызванным откуда угодно.
Пакет javax.mail
будет знать, какие свойства использовать.mail.host
, mail.from
и т. д. ( документация javax.mail здесь )
Примечание по использованию Google Gmail для SMTP
Из-за безопасности использование SMTP-сервера Google может быть немного сложным.Откуда Google узнает, что вы не просто какой-то спамер, использующий их в качестве реле?Скорее всего, вам придется сначала пройти проверку подлинности - у них есть пример кода для использования API Google Gmail , который вы можете читать и использовать, но это выходит за рамки простого javax.mail
материала.