2012-02-27 9 views
1

は、なぜ我々はメールを送信するために、システムのプロパティにJavaMailがSystem.getProperties()を使用するのはなぜですか?

Properties props = System.getProperties(); 
    props.put("mail.smtp.starttls.enable", "true"); // added this line 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.user", from); 
    props.put("mail.smtp.password", pass); 
    props.put("mail.smtp.port", "587"); 


Session session = Session.getDefaultInstance(props, null); 

などのプロパティを追加する必要があります。なぜそれが具体的にシステム特性でなければならないのですか?

+3

ユーザー名、パスワードなどのようなものは、どのようにデフォルトにすることができますか? – adarshr

+0

@adarshr:それは私が意味するものではありませんでした。私はちょうどそれがシステムプロパティになぜ追加されたのか知りたかっただけです。 – Ashwin

+0

これは、メソッドに多数のパラメータを送信するための単なる方法です。 – adarshr

答えて

6

実際にシステムのプロパティに追加する必要はありません。

新しいPropertiesインスタンスを作成して属性を設定すると、それはまったく同じように機能します。

+0

一般にプロパティを設定するには、setPropertyメソッドが呼び出されます。 puPropertyメソッドとは何ですか? – Ashwin

+0

試してみてください 'Properties props = new Properties();' –

2

システムプロパティである必要はありません。それらはjava.util.Propertiesです。

1

他にも述べたように、システムプロパティである必要はありません。しかし、多くの例がこのように表示されている理由は次のとおりです。Java Mailパッケージは、多数の設定/デバッグオプションをサポートしています。たとえば、https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.htmlには、SMTPプロバイダだけで50種類の設定が表示されます。

このオプションを設定するとします。 "mail.smtp.ssl.checkserveridentity"。システムプロパティを開始点として使用する場合、オプションを変更するには、

-Dmail.smtp.ssl.checkserveridentity=true 

を使用してJavaプロセスを再起動することができます。独自にPropertiesオブジェクトを作成する場合は、オプションを設定するためにコードを変更する必要があります。