Интерфейсы не только для определенных методов реализации разработчиков проверки. Идея состоит в том, что, потому что эти классы, как гарантируют, будут иметь определенные методы, можно использовать эти методы, даже если Вы не знаете фактический тип класса. Пример:
interface Readable {
String read();
}
List<Readable> readables; // dunno what these actually are, but we know they have read();
for(Readable reader : readables)
System.out.println(reader.read());
Во многих случаях, не имеет смысла обеспечивать базовый класс, краткий обзор или нет, потому что реализации варьируются дико и не совместно используют ничто общее помимо нескольких методов.
Динамически типизированные языки имеют понятие "ввода утки", где Вам не нужны интерфейсы; Вы свободны предположить, что объект имеет метод, что Вы обращаетесь к нему. Это работает вокруг проблемы на статически типизированных языках, где Ваш объект имеет некоторый метод (в моем примере, читайте ()), но не реализует интерфейс.
Согласно RFC, заголовок Return-Path должен устанавливаться SMTP-сервером получателя. Если в электронном письме есть заголовок Return-Path, он должен быть удален и сброшен сервером получателя.
Возможно, то, что вы видите, является правильной реализацией RFC.
Я не уверен, но похоже, что вы можете изменить заголовок «reply-to», а не «return-path». "обратный путь" должен быть установлен сервером.