为什么JavaMail使用System.getProperties()?

时间:2012-02-27 15:25:18

标签: java javamail system-properties

为什么我们需要添加像

这样的属性
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 个答案:

答案 0 :(得分:7)

您实际上不需要将它们添加到系统属性中。

如果您创建一个新的Properties实例并使用您的属性填充它,它仍然可以正常工作。

答案 1 :(得分:2)

他们不需要是系统属性。它们可以是java.util.Properties

答案 2 :(得分:2)

正如其他人所说,他们不需要成为系统属性。但是,以下可能是许多示例以这种方式显示的原因:Java Mail包支持大量设置/调试选项。例如,https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html仅列出了SMTP提供商的50种不同设置。

假设您要设置此选项:" mail.smtp.ssl.checkserveridentity"。如果使用系统属性作为起点,则可以使用

重新启动Java进程
-Dmail.smtp.ssl.checkserveridentity=true 

更改选项。如果您从头开始构建Properties对象,则可能需要更改代码来设置选项。