JavaMail-1.3-changes.txt
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:12k
源码类别:

Java编程

开发平台:

Java

  1. JavaMail 1.3
  2. ============
  3. (Updated April 1, 2002)
  4. Following is a description of the new APIs that are being
  5. introduced in JavaMail 1.3.  The numbers in parentheses
  6. are bug numbers; you can find more information about the
  7. bug reports at:
  8.     http://developer.java.sun.com/developer/bugParade/index.html
  9. Please send comments and feedback to javamail@sun.com.
  10. Many of these changes expand JavaMail's conformance with Internet
  11. standards, or make JavaMail more tolerant of messages that don't
  12. quite conform to the standards.  "Be liberal in what you receive
  13. and conservative in what you send."
  14. ===================================================================
  15. 1. Add setSender and getSender methods to MimeMessage (4405115)
  16. ---------------------------------------------------------------
  17. These convenience methods support setting and reading the RFC 822
  18. Sender header.
  19.     /** 
  20.      * Returns the value of the RFC 822 "Sender" header field.
  21.      * If the "Sender" header field is absent, <code>null</code>
  22.      * is returned.<p>
  23.      *
  24.      * This implementation uses the <code>getHeader</code> method
  25.      * to obtain the requisite header field.
  26.      *
  27.      * @return Address object
  28.      * @exception MessagingException
  29.      * @see #headers
  30.      * @since JavaMail 1.3
  31.      */
  32.     public Address getSender() throws MessagingException
  33.     /**
  34.      * Set the RFC 822 "Sender" header field. Any existing values are 
  35.      * replaced with the given address. If address is <code>null</code>,
  36.      * this header is removed.
  37.      *
  38.      * @param address the sender of this message
  39.      * @exception IllegalWriteException if the underlying
  40.      * implementation does not support modification
  41.      * of existing values
  42.      * @exception IllegalStateException if this message is
  43.      * obtained from a READ_ONLY folder.
  44.      * @exception MessagingException
  45.      * @since JavaMail 1.3
  46.      */
  47.     public void setSender(Address address) throws MessagingException
  48. ===================================================================
  49. 2. Add setContentID method to MimeBodyPart (4377720)
  50. ----------------------------------------------------
  51. This convenience method supports setting the Content-ID header.
  52.     /**
  53.      * Set the "Content-ID" header field of this body part.
  54.      * If the <code>cid</code> parameter is null, any existing 
  55.      * "Content-ID" is removed.
  56.      *
  57.      * @exception IllegalWriteException if the underlying
  58.      * implementation does not support modification
  59.      * @exception IllegalStateException if this body part is
  60.      * obtained from a READ_ONLY folder.
  61.      * @exception MessagingException
  62.      * @since JavaMail 1.3
  63.      */
  64.     public void setContentID(String cid) throws MessagingException
  65. ===================================================================
  66. 3. Add mail.mime.charset property (4377731)
  67. -------------------------------------------
  68. The "mail.mime.charset" System property (NOTE: *not* Session property)
  69. names the default charset to be used by JavaMail.  If not set, the
  70. standard J2SE "file.encoding" System property is used.  This allows
  71. applications to specify a default character set for sending messages
  72. that's different than the character set used for files stored on the
  73. system.  This is common on Japanese systems.
  74. ===================================================================
  75. 4. Add getDeletedMesageCount method to Folder (4388730)
  76. -------------------------------------------------------
  77. This convenience method would return a count of the number of deleted
  78. messages in a folder.
  79.     /**
  80.      * Get the number of deleted messages in this Folder. <p>
  81.      *
  82.      * This method can be invoked on a closed folder. However, note
  83.      * that for some folder implementations, getting the deleted message
  84.      * count can be an expensive operation involving actually opening 
  85.      * the folder. In such cases, a provider can choose not to support 
  86.      * this functionality in the closed state, in which case this method
  87.      * must return -1. <p>
  88.      *
  89.      * Clients invoking this method on a closed folder must be aware
  90.      * that this is a potentially expensive operation. Clients must
  91.      * also be prepared to handle a return value of -1 in this case. <p>
  92.      *
  93.      * This implementation returns -1 if this folder is closed. Else
  94.      * this implementation gets each Message in the folder using
  95.      * <code>getMessage(int)</code> and checks whether its
  96.      * <code>DELETED</code> flag is set. The total number of messages
  97.      * that have this flag set is returned.
  98.      *
  99.      * @return  number of deleted messages. -1 may be returned
  100.      * by certain implementations if this method is
  101.      * invoked on a closed folder.
  102.      * @exception FolderNotFoundException if this folder does 
  103.      * not exist.
  104.      * @exception       MessagingException
  105.      * @since JavaMail 1.3
  106.      */
  107.     public int getDeletedMessageCount() throws MessagingException
  108. ===================================================================
  109. 5. Support parsing "illegal" Internet addresses (4650940)
  110. ---------------------------------------------------------
  111. The parse method on the InternetAddress class takes a flag that tells
  112. whether or not to strictly enforce the RFC822 syntax rules.  Currently,
  113. when the flag is false most rules are still checked while a few are not.
  114. To better support the range of "invalid" addresses seen in real messages,
  115. and in combination with the following two changes, the parseHeader
  116. method would enforce fewer syntax rules when the strict flag is false
  117. and would enforce more rules when the strict flag is true.  If the
  118. strict flag is false and the parse is successful in separating out an
  119. email address or addresses, the syntax of the addresses themselves
  120. would not be checked.  (Introducing a new method preserves
  121. compatibility with users of the existing parse method.)
  122.     /**
  123.      * Parse the given sequence of addresses into InternetAddress
  124.      * objects.  If <code>strict</code> is false, the full syntax rules for
  125.      * individual addresses are not enforced.  If <code>strict</code> is
  126.      * true, many (but not all) of the RFC822 syntax rules are enforced.
  127.      *
  128.      * Non-strict parsing is typically used when parsing a list of
  129.      * mail addresses entered by a human.  Strict parsing is typically
  130.      * used when parsing address headers in mail messages.
  131.      *
  132.      * @param addresslist comma separated address strings
  133.      * @param strict enforce RFC822 syntax
  134.      * @return array of InternetAddress objects
  135.      * @exception AddressException if the parse failed
  136.      * @since JavaMail 1.3
  137.      */
  138.     public static InternetAddress[] parseHeader(String s, boolean strict)
  139.     throws AddressException
  140. To allow applications to check the syntax of addresses that might've
  141. been parsed with the strict flag set to false, we add a validate
  142. method.
  143.     /**
  144.      * Validate that this address conforms to the syntax rules
  145.      * of RFC 822.  The current implementation checks many, not
  146.      * all, syntax rules.  Note that, even though the syntax of
  147.      * the address may be correct, there's no guarantee that a
  148.      * mailbox of that name exists.
  149.      *
  150.      * @exception AddressException if the address
  151.      * isn't valid.
  152.      * @since JavaMail 1.3
  153.      */
  154.     public void validate() throws AddressException
  155. To control the strict flag when constructing a single InternetAddress
  156. object we add a new constructor.
  157.     /**
  158.      * Parse the given string and create an InternetAddress.
  159.      * If <code>strict</code> is false, the detailed syntax of the
  160.      * address isn't checked.
  161.      *
  162.      * @param address the address in RFC822 format
  163.      * @param strict enforce RFC822 syntax
  164.      * @exception AddressException if the parse failed
  165.      * @since JavaMail 1.3
  166.      */
  167.     public InternetAddress(String address, boolean strict)
  168. throws AddressException
  169. ===================================================================
  170. 6. Add mail.mime.address.strict property (4650940)
  171. --------------------------------------------------
  172. The MimeMessage class will use the new parseHeader method introduced
  173. above to parse headers in messages.  The "mail.mime.address.strict"
  174. Session property will control the strict flag passed to the parseHeader
  175. method.  The default is true.
  176. ===================================================================
  177. 7. Add mail.mime.decodetext.strict property (4201203)
  178. -----------------------------------------------------
  179. RFC 2047 requires that encoded text start at the beginning of a
  180. whitespace separated word.  Some mailers, especially Japanese mailers,
  181. improperly encode text and included encoded text in the middle of words.
  182. The "mail.mime.decodetext.strict" System property (NOTE: *not* Session
  183. property) controls whether JavaMail will attempt to decode such
  184. incorrectly encoded text.  The default is true.
  185. ===================================================================
  186. 8. Add mail.mime.encodeeol.strict property (4650949)
  187. ----------------------------------------------------
  188. When choosing an encoding for the data of a message, JavaMail assumes
  189. that any of CR, LF, or CRLF are valid line terminators in message
  190. parts that contain only printable ASCII characters, even if the part is
  191. not a MIME text type.  It's common, especially on UNIX systems, for
  192. data of MIME type application/octet-stream (for example) to really be
  193. textual data that should be transmitted with the encoding rules for
  194. MIME text.  In rare cases, such pure ASCII text may in fact be binary
  195. data in which the CR and LF characters must be preserved exactly.  The
  196. "mail.mime.encodeeol.strict" System property (NOTE: *not* Session
  197. property) controls whether JavaMail will consider a lone CR or LF in a
  198. body part that's not a MIME text type to indicate that the body part
  199. needs to be encoded.
  200. ===================================================================
  201. 9. Add isGroup and getGroup methods to InternetAddress (4650952)
  202. ----------------------------------------------------------------
  203. To better support RFC822 group addresses, the following methods
  204. would be added.
  205.     /**
  206.      * Indicates whether this address is an RFC 822 group address.
  207.      * Note that a group address is different than the mailing
  208.      * list addresses supported by most mail servers.  Group addresses
  209.      * are rarely used; see RFC 822 for details.
  210.      *
  211.      * @return true if this address represents a group
  212.      * @since JavaMail 1.3
  213.      */
  214.     public boolean isGroup()
  215.     /**
  216.      * Return the members of a group address.  A group may have zero,
  217.      * one, or more members.  If this address is not a group, null
  218.      * is returned.  The <code>strict</code> parameter controls whether
  219.      * the group list is parsed using strict RFC 822 rules or not.
  220.      * The parsing is done using the <code>parseHeader</code> method.
  221.      *
  222.      * @return array of InternetAddress objects, or null
  223.      * @exception AddressException if the group list can't be parsed
  224.      * @since JavaMail 1.3
  225.      */
  226.     public InternetAddress[] getGroup(boolean strict) throws AddressException
  227. ===================================================================
  228. 10. Support per-session debug output stream (4517686)
  229. -----------------------------------------------------
  230. To allow the debugging output for a session to be redirected, we add
  231. the following methods to Session.
  232.     /**
  233.      * Set the stream to be used for debugging output for this session.
  234.      * If <code>out</code> is null, <code>System.out</code> will be used.
  235.      * Note that debugging output that occurs before any session is created,
  236.      * as a result of setting the <code>mail.debug</code> system property,
  237.      * will always be sent to <code>System.out</code>.
  238.      *
  239.      * @param out the PrintStream to use for debugging output
  240.      * @since JavaMail 1.3
  241.      */
  242.     public void setDebugOut(PrintStream out)
  243.     /**
  244.      * Returns the stream to be used for debugging output.  If no stream
  245.      * has been set, <code>System.out</code> is returned.
  246.      *
  247.      * @return the PrintStream to use for debugging output
  248.      * @since JavaMail 1.3
  249.      */
  250.     public PrintStream getDebugOut()