Существует ли принятый синтаксис для SMTP-сервера? (и как это разобрать) - PullRequest
0 голосов
/ 19 января 2011

Я видел такие вещи, как:

user:password@smtpserver:port

В прошлом, но я не уверен, что какая-то библиотека анализировала это для создания свойств для создания сеанса, или это было принятоформат.

Ответы [ 3 ]

3 голосов
/ 19 января 2011

Хотя существует схема SMTP URL , я никогда не видел, чтобы кто-нибудь ее использовал. На практике большинство приложений предоставляют четыре отдельных поля для хоста, порта, имени пользователя и пароля. Но если вам действительно нужно поместить эти четыре компонента в одну строку, приведенный вами пример, вероятно, является наиболее известным форматом для чего-то подобного.

1 голос
/ 19 января 2011

Использование URI для указания сетевого ресурса, такого как SMTP-сервер, вероятно, является подходом к «принятому» формату, который вы видите, SMTP URI, будет что-то вроде smtp: // user: host @ example.com: порт или, возможно, просто smtp: //example.com.Для извлечения различных компонентов вы использовали бы универсальную библиотеку анализа URI.

Существует также старый черновой вариант RFC для SMTP URL s

0 голосов
/ 19 января 2011

Я думаю, что это сработало бы.

Я хотел бы добавить в качестве ответа, как я использую класс java.net.URI для получения информации из этого URI.

class Demo { 
  public static void main( String ... args ) throws Exception  { 
    System.out.println( inspect( new URI("smtp://user:port@host:25")));
  }
  // invoke all the getXyz methods on object and construct 
  // a string with the result. 
  private static String inspect( Object o ) throws Exception  { 
    StringBuilder builder = new StringBuilder();
    for( Method m : o.getClass().getMethods() ) { 
      String name = m.getName();
      if( name.startsWith("get")) { 
        builder.append( name )
        .append(" = " )
        .append( m.invoke( o ) )
        .append( "\n" );
      }
    }
    return builder.toString();
  }
}

Выход

getAuthority = user:port@host:25
getFragment = null
getPath =
getQuery = null
getScheme = smtp
getHost = host
getPort = 25
getUserInfo = user:port
getRawAuthority = user:port@host:25
getRawFragment = null
getRawPath =
getRawQuery = null
getRawSchemeSpecificPart = //user:port@host:25
getRawUserInfo = user:port
getSchemeSpecificPart = //user:port@host:25
getClass = class java.net.URI
...