Java 如何让客户指定其电子邮件服务器信息?

Java 如何让客户指定其电子邮件服务器信息?,java,email,Java,Email,我的web应用程序安装在许多客户服务器上。由于应用程序需要发送电子邮件(密码恢复),我需要一个为每个客户设置电子邮件服务器信息的好方法 我是否应该有一个xml文件,每个客户都可以在其中填写电子邮件服务器信息,然后应用程序从中获取信息 有更好的方法吗 我会选择Java属性文件格式,因为XML很重,需要解析,而且要捕获的数据点之间实际上没有层次关系,用于定位电子邮件服务器(名称、端口等)。我会选择Java属性文件格式,因为XML很重,需要解析,而且要捕获的数据点之间实际上没有层次关系,用于定位电子邮

我的web应用程序安装在许多客户服务器上。由于应用程序需要发送电子邮件(密码恢复),我需要一个为每个客户设置电子邮件服务器信息的好方法

我是否应该有一个xml文件,每个客户都可以在其中填写电子邮件服务器信息,然后应用程序从中获取信息


有更好的方法吗

我会选择Java
属性
文件格式,因为XML很重,需要解析,而且要捕获的数据点之间实际上没有层次关系,用于定位电子邮件服务器(名称、端口等)。

我会选择Java
属性
文件格式,因为XML很重,需要解析,而且要捕获的数据点之间实际上没有层次关系,用于定位电子邮件服务器(名称、端口等)。

为什么不使用属性文件和
java.util.Preferences
API?如果只是指定主机/用户名/密码组合,我不确定您是否需要XML提供的复杂性/灵活性


如果您想更灵活,请查看lib,它允许您抽象出配置机制并指定层次结构。如果您提供的是邮件服务器配置,那么还可以/应该配置什么?

为什么不使用属性文件和
java.util.Preferences
API?如果只是指定主机/用户名/密码组合,我不确定您是否需要XML提供的复杂性/灵活性


如果您想更灵活,请查看lib,它允许您抽象出配置机制并指定层次结构。如果您提供的是邮件服务器配置,那么您还可以/应该配置什么?

如果没有更多信息,很难给您提供具体的建议。对于独立应用程序,我倾向于使用简单的属性文件()

  • 它们在Java中易于处理(您可以轻松地读写它们,它们由
    映射支持)
  • 它们可以在紧急情况下手动编辑,比XML容易得多
有一些缺点:

  • 它们仅为ASCII(ISO-8859-1),因此如果要写入扩展的unicode字符,您可能会遇到麻烦。如果您从Java写入和读取文件,您将不会遇到任何问题-Properties类将为您执行此转换
  • 某些SMTP服务器需要身份验证。将未加密的密码存储到属性文件中是一种不好的做法,每个人都可以读取这些文件。在这种情况下,您需要想出某种可逆的加密机制,这本身就是一个挑战。您也必须对XML执行此操作。您可以指定用户使用权限自行修复此文件,尽管这远不如自己加密

我相信有更好的方法-你会得到很多答案-但我知道,这些文件简单、相对坚固且易于处理。

没有更多信息,很难给你具体的建议。对于独立的应用程序,我倾向于使用简单的属性文件()

  • 它们在Java中易于处理(您可以轻松地读写它们,它们由
    映射支持)
  • 它们可以在紧急情况下手动编辑,比XML容易得多
有一些缺点:

  • 它们仅为ASCII(ISO-8859-1),因此如果要写入扩展的unicode字符,您可能会遇到麻烦。如果您从Java写入和读取文件,您将不会遇到任何问题-Properties类将为您执行此转换
  • 某些SMTP服务器需要身份验证。将未加密的密码存储到属性文件中是一种不好的做法,每个人都可以读取这些文件。在这种情况下,您需要想出某种可逆的加密机制,这本身就是一个挑战。您也必须对XML执行此操作。您可以指定用户使用权限自行修复此文件,尽管这远不如自己加密

我相信有更好的方法——你会得到很多答案——但我知道,这些文件简单、相对坚固且易于处理。

谢谢。是的,我不喜欢看到应用程序强迫我在任何地方输入ascii密码;现在我“在另一边”,这看起来没那么糟糕。:-)是的……除了键盘记录者,我认为从键盘获取密码,并且只在必要时将其存储在内存中(而不是文件中)是最安全的方式,并且不涉及任何可逆加密。但正如你所说,这对用户来说是一种后遗症:)谢谢。是的,我讨厌看到应用程序强迫我在任何地方输入ascii密码;既然我“站在另一边”,那就没那么糟糕了。:-)是 啊除了键盘记录者,我认为从键盘获取密码,并且只在必要时将其存储在内存(而不是文件)中是最安全的方式,并且不涉及任何可逆加密。但正如您所说,这对用户来说是一种后遗症:)