<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
   
http://www.apache.org/licenses/LICENSE-2.0
   
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5.0" 
    xmlns:xl="http://www.w3.org/1999/xlink" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../applications/content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
        <title>Sending Email in OFBiz</title>
        <para>
            Various parts in the OFBiz application are sending out email for various reasons. Sending out email is controlled in the 
            ${ofbiz install dir}/framework/common/config/general.properties file with the following parameters:
            <orderedlist>
                <listitem><para>
                    SMTP Server (relay host): mail.smtp.relay.host
                </para></listitem> 
                <listitem><para>
                    SMTP Username (if needed): mail.smtp.auth.user
                </para></listitem> 
                <listitem><para>
                    SMTP Password (if needed): mail.smtp.auth.password
                </para></listitem> 
                <listitem><para>
                    Turn on email notifications by setting the mail.notifications.enabled property to "Y".
                </para></listitem> 
            </orderedlist> 
        </para>
</section>

