report.mailing-lists.column.post = Post (please subscribe first)
report.mailing-lists.intro = These are the mailing lists that have been established for this project. \
             For each list, there is a subscribe, unsubscribe, and an archive link.\
        <br/><b>Please subscribe before posting</b>.\
        <p>\
            For general information on mailing list participation, please read \
            <a href="./mail.html">HttpComponents Mailing Lists</a>\
        </p>\
        <p>\
            Questions related to the <u>usage</u> of HttpComponents software should be posted to the \
            <a href="https://mail-archives.apache.org/mod_mbox/hc-httpclient-users/" class="externalLink">User List</a>. \
        </p>\
        <p>\
            The <a href="https://mail-archives.apache.org/mod_mbox/hc-dev/" class="externalLink">Developer List</a> \
            is for questions and discussion related to the development of HttpComponents software.\
        </p>\
        <p>\
            Please do not cross-post; developers are also subscribed to the user list.\
        </p>\
        <p>\
            Read the archives first in case your question has already been answered. \
            If not, then subscribe to the appropriate list and post your question.\
        </p>\
        <p>\
            <strong>Note:</strong> please don't send patches or attachments to any of the mailing lists. \
            Patches are best handled via the <a href="/issue-tracking.html">Issue Tracking</a> system. \
            Otherwise, please upload the file to a public server and include the URL in the mail.\
        </p>\
        <p>\
            Please read the <a href="https://www.apache.org/foundation/public-archives.html" class="externalLink">Public Forum Archive Policy</a> \
            and <a href="https://www.apache.org/dev/contrib-email-tips.html" class="externalLink">Tips for email contributors</a>. \
            <br>\
            For further information on Apache mailing lists please read \
            <a href="https://www.apache.org/foundation/mailinglists.html" class="externalLink">General mailing list information</a> \
            in particular the section entitled \
            <a href="https://www.apache.org/foundation/mailinglists.html#subscribe" class="externalLink">Subscribing and Unsubscribing</a> \
        </p>
