2012-02-27 63 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 2012-02-27 15:27:42

+0

@adarshr:那不是我的意思。我只是想知道为什么它被添加到系统属性中。 – Ashwin 2012-02-27 15:30:54

+0

这只是一种向方法发送大量参数的方法。 – adarshr 2012-02-27 15:31:34

回答

6

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

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

+0

,但仍然总是添加到系统属性中。通常要调用setProperty方法来设置属性。什么是puProperty方法。 – Ashwin 2012-02-27 15:30:00

+0

尝试'Properties props = new Properties();'而不是 – 2012-02-27 15:35:10

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对象,那么你可能需要更改代码来设置选项。