//# 25 errors, 1,071 messages
//#
/*
    //#MailUtil.java:1:1: class: org.apache.roller.weblogger.util.MailUtil$MailingException
    //#MailUtil.java:1:1: method: org.apache.roller.weblogger.util.MailUtil$MailingException.org.apache.roller.weblogger.util.MailUtil$MailingException__static_init
    //#MailUtil.java:1:1: class: org.apache.roller.weblogger.util.MailUtil
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  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.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.util;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeSet;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Address;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.MailProvider;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.startup.WebloggerStartup;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogEntryComment;
import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;


/**
 * A utility class for helping with sending emails.
 */
public class MailUtil {
    //#MailUtil.java:59: method: void org.apache.roller.weblogger.util.MailUtil.org.apache.roller.weblogger.util.MailUtil()
    
    private static Log log = LogFactory.getLog(MailUtil.class);
    //#MailUtil.java:61: method: org.apache.roller.weblogger.util.MailUtil.org.apache.roller.weblogger.util.MailUtil__static_init
    //#MailUtil.java:61: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: org.apache.roller.weblogger.util.MailUtil__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.util.MailUtil__static_init): __Descendant_Table[org/apache/roller/weblogger/util/MailUtil]
    //#output(org.apache.roller.weblogger.util.MailUtil__static_init): log
    //#post(org.apache.roller.weblogger.util.MailUtil__static_init): __Descendant_Table[org/apache/roller/weblogger/util/MailUtil] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.util.MailUtil__static_init): init'ed(log)
    //#MailUtil.java:61: end of method: org.apache.roller.weblogger.util.MailUtil.org.apache.roller.weblogger.util.MailUtil__static_init
    
    private static final String EMAIL_ADDR_REGEXP = "^.*@.*[.].{2,}$";
    
    
    /**
     * Ideally mail senders should call this first to avoid errors that occur 
     * when mail is not properly configured. We'll complain about that at 
     * startup, no need to complain on every attempt to send.
     */
    public static boolean isMailConfigured() {
        return WebloggerStartup.getMailProvider() != null; 
    //#MailUtil.java:72: method: bool org.apache.roller.weblogger.util.MailUtil.isMailConfigured()
    //#MailUtil.java:72: Warning: method not available
    //#    -- call on MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: bool isMailConfigured()
    //#    unanalyzed callee: MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#output(bool isMailConfigured()): return_value
    //#post(bool isMailConfigured()): init'ed(return_value)
    //#MailUtil.java:72: end of method: bool org.apache.roller.weblogger.util.MailUtil.isMailConfigured()
    }
    
    /**
     * Send an email notice that a new pending entry has been submitted.
     */
    public static void sendPendingEntryNotice(WeblogEntry entry) 
            throws WebloggerException {
        
        Session mailSession = WebloggerStartup.getMailProvider().getSession();
    //#MailUtil.java:81: method: void org.apache.roller.weblogger.util.MailUtil.sendPendingEntryNotice(WeblogEntry)
    //#MailUtil.java:81: Warning: method not available
    //#    -- call on MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#MailUtil.java:81: Warning: method not available
    //#    -- call on Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#input(void sendPendingEntryNotice(WeblogEntry)): "blind copying e-mail to: "._tainted
    //#input(void sendPendingEntryNotice(WeblogEntry)): "copying e-mail to: "._tainted
    //#input(void sendPendingEntryNotice(WeblogEntry)): "e-mail from: "._tainted
    //#input(void sendPendingEntryNotice(WeblogEntry)): "sending e-mail to: "._tainted
    //#input(void sendPendingEntryNotice(WeblogEntry)): entry
    //#input(void sendPendingEntryNotice(WeblogEntry)): java.lang.Boolean.TRUE
    //#input(void sendPendingEntryNotice(WeblogEntry)): javax.mail.Message$RecipientType.BCC
    //#input(void sendPendingEntryNotice(WeblogEntry)): javax.mail.Message$RecipientType.CC
    //#input(void sendPendingEntryNotice(WeblogEntry)): javax.mail.Message$RecipientType.TO
    //#input(void sendPendingEntryNotice(WeblogEntry)): log
    //#input(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#pre[1] (void sendPendingEntryNotice(WeblogEntry)): (soft) entry != null
    //#pre[2] (void sendPendingEntryNotice(WeblogEntry)): (soft) log != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): init'ed(java.lang.Boolean.TRUE)
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): java.util.ArrayList:size(...)@113 >= 0
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): java.util.Iterator:next(...)@105 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): java.util.ResourceBundle:getBundle(...)@118 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.MailProvider:getSession(...)@81 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.UserManager:getUsers(...)@99 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@116 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@87 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@116 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@87 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider(...)@81 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@89 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@90 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@106 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@116 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@118 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@121 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@121 != null
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR)
    //#presumption(void sendPendingEntryNotice(WeblogEntry)): to.length@113 <= 4_294_967_295
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendPendingEntryNotice(WeblogEntry)): Effects-of-calling:javax.mail.Transport:close
    //#test_vector(void sendPendingEntryNotice(WeblogEntry)): java.util.Iterator:hasNext(...)@104: {0}, {1}
    //#test_vector(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.User:getEmailAddress(...)@106: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendPendingEntryNotice(WeblogEntry)): org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(...)@106: {0}, {1}
        if(mailSession == null) {
            throw new WebloggerException("Couldn't get mail Session");
        }
        
        try {
            UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
    //#MailUtil.java:87: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MailUtil.java:87: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
            
            String userName = entry.getCreator().getUserName();
    //#MailUtil.java:89: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#MailUtil.java:89: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
            String from = entry.getCreator().getEmailAddress();
    //#MailUtil.java:90: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#MailUtil.java:90: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
            String cc[] = new String[] {from};
            String bcc[] = new String[0];
            String to[];
            String subject;
            String content;
            
            // list of enabled website authors and admins
            ArrayList reviewers = new ArrayList();
            List websiteUsers = umgr.getUsers(
    //#MailUtil.java:99: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MailUtil.java:99: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.UserManager:getUsers(Weblog, Boolean, Date, Date, int, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.UserManager:getUsers(Weblog, Boolean, Date, Date, int, int)
                    entry.getWebsite(), Boolean.TRUE, null, null, 0, -1);
            
            // build list of reviewers (website users with author permission)
            Iterator websiteUserIter = websiteUsers.iterator();
            while (websiteUserIter.hasNext()) {
                User websiteUser = (User)websiteUserIter.next();
                if (entry.getWebsite().hasUserPermissions(
    //#MailUtil.java:106: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MailUtil.java:106: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
    //#MailUtil.java:106: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
                        
                        websiteUser,WeblogPermission.AUTHOR)
                        && websiteUser.getEmailAddress() != null) {
                    reviewers.add(websiteUser.getEmailAddress());
    //#MailUtil.java:110: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
                }
            }
            to = (String[])reviewers.toArray(new String[reviewers.size()]);
            
            // Figure URL to entry edit page
            String editURL = WebloggerFactory.getWeblogger().getUrlStrategy().getEntryEditURL(entry.getWebsite().getHandle(), entry.getId(), true);
    //#MailUtil.java:116: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MailUtil.java:116: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#MailUtil.java:116: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MailUtil.java:116: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#MailUtil.java:116: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#MailUtil.java:116: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getEntryEditURL(String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getEntryEditURL(String, String, bool)
            
            ResourceBundle resources = ResourceBundle.getBundle(
    //#MailUtil.java:118: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MailUtil.java:118: Warning: method not available
    //#    -- call on Locale org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Locale org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance()
                    "ApplicationResources", entry.getWebsite().getLocaleInstance());
            StringBuffer sb = new StringBuffer();
            sb.append(
    //#MailUtil.java:121: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MailUtil.java:121: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#MailUtil.java:121: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                    MessageFormat.format(
                    resources.getString("weblogEntry.pendingEntrySubject"),
                    new Object[] {
                entry.getWebsite().getName(),
                entry.getWebsite().getHandle()
            }));
            subject = sb.toString();
            sb = new StringBuffer();
            sb.append(
                    MessageFormat.format(
                    resources.getString("weblogEntry.pendingEntryContent"),
                    new Object[] { userName, userName, editURL })
                    );
            content = sb.toString();
            MailUtil.sendTextMessage(
    //#MailUtil.java:136: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    basic block: bb_8
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 689
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:136: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(cc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    basic block: bb_8
    //#    assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 689
    //#    VN: cc[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
    //#MailUtil.java:136: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    basic block: bb_8
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 689
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
                    from, to, cc, bcc, subject, content);
        } catch (MessagingException e) {
            log.error("ERROR: Problem sending pending entry notification email.");
    //#MailUtil.java:139: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendPendingEntryNotice(WeblogEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        }
    }
    //#MailUtil.java:141: end of method: void org.apache.roller.weblogger.util.MailUtil.sendPendingEntryNotice(WeblogEntry)
    
    
    /**
     * Send a weblog invitation email.
     */
    public static void sendWeblogInvitation(Weblog website, 
                                            User user)
            throws WebloggerException {
        
        Session mailSession = WebloggerStartup.getMailProvider().getSession();
    //#MailUtil.java:151: method: void org.apache.roller.weblogger.util.MailUtil.sendWeblogInvitation(Weblog, User)
    //#MailUtil.java:151: Warning: method not available
    //#    -- call on MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#MailUtil.java:151: Warning: method not available
    //#    -- call on Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#input(void sendWeblogInvitation(Weblog, User)): ".roller-ui.menu.rol"._tainted
    //#input(void sendWeblogInvitation(Weblog, User)): "blind copying e-mail to: "._tainted
    //#input(void sendWeblogInvitation(Weblog, User)): "copying e-mail to: "._tainted
    //#input(void sendWeblogInvitation(Weblog, User)): "e-mail from: "._tainted
    //#input(void sendWeblogInvitation(Weblog, User)): "sending e-mail to: "._tainted
    //#input(void sendWeblogInvitation(Weblog, User)): javax.mail.Message$RecipientType.BCC
    //#input(void sendWeblogInvitation(Weblog, User)): javax.mail.Message$RecipientType.CC
    //#input(void sendWeblogInvitation(Weblog, User)): javax.mail.Message$RecipientType.TO
    //#input(void sendWeblogInvitation(Weblog, User)): log
    //#input(void sendWeblogInvitation(Weblog, User)): user
    //#input(void sendWeblogInvitation(Weblog, User)): website
    //#pre[2] (void sendWeblogInvitation(Weblog, User)): user != null
    //#pre[3] (void sendWeblogInvitation(Weblog, User)): website != null
    //#pre[1] (void sendWeblogInvitation(Weblog, User)): (soft) log != null
    //#presumption(void sendWeblogInvitation(Weblog, User)): java.util.ResourceBundle:getBundle(...)@172 != null
    //#presumption(void sendWeblogInvitation(Weblog, User)): org.apache.roller.weblogger.business.MailProvider:getSession(...)@151 != null
    //#presumption(void sendWeblogInvitation(Weblog, User)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@158 != null
    //#presumption(void sendWeblogInvitation(Weblog, User)): org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider(...)@151 != null
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendWeblogInvitation(Weblog, User)): Effects-of-calling:javax.mail.Transport:close
        if(mailSession == null) {
            throw new WebloggerException("ERROR: Notification email(s) not sent, "
                    + "Roller's mail session not properly configured");
        }
        
        try {
            UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
    //#MailUtil.java:158: Warning: unused assignment
    //#    unused assignment into umgr
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#MailUtil.java:158: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MailUtil.java:158: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
            
            String userName = user.getUserName();
    //#MailUtil.java:160: Warning: unused assignment
    //#    unused assignment into userName
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#MailUtil.java:160: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
            String from = website.getEmailAddress();
    //#MailUtil.java:161: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getEmailAddress()
            String cc[] = new String[] {from};
            String bcc[] = new String[0];
            String to[] = new String[] {user.getEmailAddress()};
    //#MailUtil.java:164: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
            String subject;
            String content;
            
            // Figure URL to entry edit page
            String rootURL = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#MailUtil.java:169: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
            String url = rootURL + "/roller-ui/menu.rol";
            
            ResourceBundle resources = ResourceBundle.getBundle(
    //#MailUtil.java:172: Warning: method not available
    //#    -- call on Locale org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: Locale org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance()
                    "ApplicationResources",
                    website.getLocaleInstance());
            StringBuffer sb = new StringBuffer();
            sb.append(MessageFormat.format(
    //#MailUtil.java:176: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#MailUtil.java:176: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                    resources.getString("inviteMember.notificationSubject"),
                    new Object[] {
                website.getName(),
                website.getHandle()})
                );
            subject = sb.toString();
            sb = new StringBuffer();
            sb.append(MessageFormat.format(
    //#MailUtil.java:184: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#MailUtil.java:184: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#MailUtil.java:184: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
                    resources.getString("inviteMember.notificationContent"),
                    new Object[] {
                website.getName(),
                website.getHandle(),
                user.getUserName(),
                url
            }));
            content = sb.toString();
            MailUtil.sendTextMessage(
    //#MailUtil.java:193: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    basic block: bb_2
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 689
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:193: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(cc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    basic block: bb_2
    //#    assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 689
    //#    VN: cc[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
    //#MailUtil.java:193: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendWeblogInvitation(Weblog, User)
    //#    basic block: bb_2
    //#    assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 689
    //#    VN: to[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
                    from, to, cc, bcc, subject, content);
        } catch (MessagingException e) {
            throw new WebloggerException("ERROR: Notification email(s) not sent, "
                    + "due to Roller configuration or mail server problem.", e);
        }
    }
    //#MailUtil.java:199: end of method: void org.apache.roller.weblogger.util.MailUtil.sendWeblogInvitation(Weblog, User)
    
    
    /**
     * Send a weblog invitation email.
     */
    public static void sendUserActivationEmail(User user)
            throws WebloggerException {
        
        Session mailSession = WebloggerStartup.getMailProvider().getSession();
    //#MailUtil.java:208: method: void org.apache.roller.weblogger.util.MailUtil.sendUserActivationEmail(User)
    //#MailUtil.java:208: Warning: method not available
    //#    -- call on MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#MailUtil.java:208: Warning: method not available
    //#    -- call on Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#input(void sendUserActivationEmail(User)): ".roller-ui.register!activate.rol?activationCode="._tainted
    //#input(void sendUserActivationEmail(User)): "blind copying e-mail to: "._tainted
    //#input(void sendUserActivationEmail(User)): "copying e-mail to: "._tainted
    //#input(void sendUserActivationEmail(User)): "e-mail from: "._tainted
    //#input(void sendUserActivationEmail(User)): "sending e-mail to: "._tainted
    //#input(void sendUserActivationEmail(User)): javax.mail.Message$RecipientType.BCC
    //#input(void sendUserActivationEmail(User)): javax.mail.Message$RecipientType.CC
    //#input(void sendUserActivationEmail(User)): javax.mail.Message$RecipientType.TO
    //#input(void sendUserActivationEmail(User)): log
    //#input(void sendUserActivationEmail(User)): user
    //#pre[2] (void sendUserActivationEmail(User)): user != null
    //#pre[1] (void sendUserActivationEmail(User)): (soft) log != null
    //#presumption(void sendUserActivationEmail(User)): java.util.ResourceBundle:getBundle(...)@215 != null
    //#presumption(void sendUserActivationEmail(User)): org.apache.roller.weblogger.business.MailProvider:getSession(...)@208 != null
    //#presumption(void sendUserActivationEmail(User)): org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider(...)@208 != null
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:javax.mail.Transport:close
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:org.apache.commons.lang.StringUtils:split
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.util.Locale
    //#unanalyzed(void sendUserActivationEmail(User)): Effects-of-calling:java.util.Locale:getDefault
        if(mailSession == null) {
            throw new WebloggerException("ERROR: Notification email(s) not sent, "
                    + "Roller's mail session not properly configured");
        }
        
        try {
            ResourceBundle resources = ResourceBundle.getBundle(
    //#MailUtil.java:215: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getLocale()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getLocale()
                    "ApplicationResources", I18nUtils.toLocale(user.getLocale()));
            
            String from = WebloggerRuntimeConfig.getProperty(
    //#MailUtil.java:218: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getProperty(String)
                    "user.account.activation.mail.from");
            
            String cc[] = new String[0];
            String bcc[] = new String[0];
            String to[] = new String[] { user.getEmailAddress() };
    //#MailUtil.java:223: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
            String subject = resources.getString(
                    "user.account.activation.mail.subject");
            String content;
            
            String rootURL = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#MailUtil.java:228: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
            
            StringBuffer sb = new StringBuffer();
            
            // activationURL=
            String activationURL = rootURL
    //#MailUtil.java:233: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getActivationCode()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getActivationCode()
                    + "/roller-ui/register!activate.rol?activationCode="
                    + user.getActivationCode();
            sb.append(MessageFormat.format(
    //#MailUtil.java:236: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getFullName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getFullName()
    //#MailUtil.java:236: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
                    resources.getString("user.account.activation.mail.content"),
                    new Object[] { user.getFullName(), user.getUserName(),
                    activationURL }));
            content = sb.toString();
            
            sendHTMLMessage(from, to, cc, bcc, subject, content);
    //#MailUtil.java:242: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    basic block: bb_2
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 773
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:242: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage: (soft) init'ed(cc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    basic block: bb_2
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 773
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:242: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendUserActivationEmail(User)
    //#    basic block: bb_2
    //#    assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 773
    //#    VN: to[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
        } catch (MessagingException e) {
            throw new WebloggerException("ERROR: Problem sending activation email.", e);
        }
    }
    //#MailUtil.java:246: end of method: void org.apache.roller.weblogger.util.MailUtil.sendUserActivationEmail(User)
    
    
    /**
     * Send email notification of new or newly approved comment.
     * TODO: Make the addressing options configurable on a per-website basis.
     * 
     * @param commentObject      The new comment
     * @param messages           Messages to be included in e-mail (or null). 
     *                           Errors will be assumed to be "validation errors" 
     *                           and messages will be assumed to be "from the system"
     */
    public static void sendEmailNotification(WeblogEntryComment commentObject,
                                             RollerMessages messages, 
                                             I18nMessages resources,
                                             boolean notifySubscribers) 
            throws MailingException {
        
        WeblogEntry entry = commentObject.getWeblogEntry();
    //#MailUtil.java:264: method: void org.apache.roller.weblogger.util.MailUtil.sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#MailUtil.java:264: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): " "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): " color: black; font-size: 12px">"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): ""._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "">"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "&#10;"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "&#10;&#10;"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "&#10;&#10;----&#10;"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): ": "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<.Body><.html>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<.a><.span>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<.li>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<.p>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<.ul>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<a href=""._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<br .>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<br .><br .>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<br .><br .><hr .><span style="font-size: 11px">"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<html><body style="background: white; "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<li>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<p>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "<ul>"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): ">"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "Error getting key "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "Link to comment management page:"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "RE: "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "blind copying e-mail to: "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "commentServlet.email.thereAreErrorMessages"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "commentServlet.email.thereAreSystemMessages"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "copying e-mail to: "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "e-mail from: "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "email.comment.anonymous"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "email.comment.respond"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "email.comment.title"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "email.comment.wrote"._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): "sending e-mail to: "._tainted
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): commentObject
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): javax.mail.Message$RecipientType.BCC
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): javax.mail.Message$RecipientType.CC
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): javax.mail.Message$RecipientType.TO
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): log
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): messages
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): messages.__Tag
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): messages.mErrors
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): messages.mMessages
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): notifySubscribers
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/I18nMessages.log
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Descendant_Table[org/apache/roller/weblogger/util/RollerMessages$RollerMessage]
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Descendant_Table[others]
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Dispatch_Table.getArgs()[Ljava/lang/String;
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Dispatch_Table.getKey()Ljava/lang/String;
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages.__Descendant_Table[org/apache/roller/weblogger/util/RollerMessages]
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages.__Descendant_Table[others]
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getErrorCount()I
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getErrors()Ljava/util/Iterator;
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getMessageCount()I
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getMessages()Ljava/util/Iterator;
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.BR_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_A_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_BLOCKQUOTE_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_B_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_I_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_LI_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_OL_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_PRE_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_P_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.CLOSING_UL_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_A_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_BLOCKQUOTE_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_B_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_I_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_LI_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_OL_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_PRE_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_P_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.OPENING_UL_TAG_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org/apache/roller/weblogger/util/Utilities.QUOTE_PATTERN
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): resources
    //#input(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): resources.bundle
    //#pre[1] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): commentObject != null
    //#pre[2] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) log != null
    //#pre[3] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) messages != null
    //#pre[4] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) messages.__Tag == org/apache/roller/weblogger/util/RollerMessages
    //#pre[5] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) messages.mErrors != null
    //#pre[6] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) messages.mMessages != null
    //#pre[8] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) resources != null
    //#pre[9] (void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): (soft) resources.bundle != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): bcc.length@318 <= 4_294_967_295
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:next(...).__Tag@372 == org/apache/roller/weblogger/util/RollerMessages$RollerMessage
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:next(...).__Tag@389 == org/apache/roller/weblogger/util/RollerMessages$RollerMessage
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:next(...)@298 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:next(...)@372 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:next(...)@389 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Set:toArray(...)@318 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@354 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@408 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@354 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@408 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.Weblog:getEmailComments(...)@270 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.WeblogEntry:getComments(...)@296 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@266 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@265 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail(...)@304 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getNotify(...)@302 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry(...)@264 != null
    //#presumption(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): to.length@318 <= 4_294_967_295
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:javax.mail.Transport:close
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.ResourceBundle:getString
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:org.apache.commons.lang.StringUtils:replace
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.regex.Matcher:end
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.regex.Matcher:replaceAll
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): Effects-of-calling:java.util.List:iterator
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): notifySubscribers: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): commenterAddrs.length@318: {0}, {1..+Inf}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.lang.Boolean:booleanValue(...)@270: {1}, {0}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.lang.Boolean:booleanValue(...)@302: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.lang.String:matches(...)@304: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:hasNext(...)@371: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Iterator:hasNext(...)@388: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.List:size(...)@70: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.List:size(...)@74: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): java.util.Set:size(...)@421: {2..4_294_967_295}, {-2_147_483_648..1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.commons.lang.StringUtils:equals(...)@421: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@283: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@299: {1}, {0}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@336: {1}, {0}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(...)@269: {0}, {1}
    //#test_vector(void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)): org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(...)@327: {0}, {1}
        Weblog weblog = entry.getWebsite();
    //#MailUtil.java:265: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        User user = entry.getCreator();
    //#MailUtil.java:266: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
        
        // Only send email if email notificaiton is enabled
        boolean notify = WebloggerRuntimeConfig.getBooleanProperty("users.comments.emailnotify");
    //#MailUtil.java:269: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
        if (!notify || !weblog.getEmailComments().booleanValue()) {
    //#MailUtil.java:270: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getEmailComments()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getEmailComments()
            // notifications disabled, just bail
            return;
        }
        
        log.debug("Comment notification enabled ... preparing email");
    //#MailUtil.java:275: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        // Determine message and addressing options from init parameters
        boolean hideCommenterAddrs = WebloggerConfig.getBooleanProperty(
    //#MailUtil.java:278: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty(String)
                "comment.notification.hideCommenterAddresses");
        
        // use either the weblog configured from address or the site configured from address
        String from = weblog.getEmailFromAddress();
    //#MailUtil.java:282: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getEmailFromAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getEmailFromAddress()
        if(StringUtils.isEmpty(from)) {
    //#MailUtil.java:283: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
            // TODO: this should not be the users email address
            from = user.getEmailAddress();
    //#MailUtil.java:285: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
        }
        
        // build list of email addresses to send notification to
        Set subscribers = new TreeSet();
        
        // If we are to notify subscribers, then...
        if (notifySubscribers) {
            log.debug("Sending notification email to all subscribers");
    //#MailUtil.java:293: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            // Get all the subscribers to this comment thread
            List comments = entry.getComments(true, true);
    //#MailUtil.java:296: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.WeblogEntry:getComments(bool, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.WeblogEntry:getComments(bool, bool)
            for (Iterator it = comments.iterator(); it.hasNext();) {
                WeblogEntryComment comment = (WeblogEntryComment) it.next();
                if (!StringUtils.isEmpty(comment.getEmail())) {
    //#MailUtil.java:299: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#MailUtil.java:299: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
                    // If user has commented twice,
                    // count the most recent notify setting
                    if (comment.getNotify().booleanValue()) {
    //#MailUtil.java:302: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.WeblogEntryComment:getNotify()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.WeblogEntryComment:getNotify()
                        // only add those with valid email
                        if (comment.getEmail().matches(EMAIL_ADDR_REGEXP)) {
    //#MailUtil.java:304: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
                            subscribers.add(comment.getEmail());
    //#MailUtil.java:305: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
                        }
                    } else {
                        // remove user who doesn't want to be notified
                        subscribers.remove(comment.getEmail());
    //#MailUtil.java:309: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
                    }
                }
            }
        } else {
            log.debug("Sending notification email only to weblog owner");
    //#MailUtil.java:314: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        
        // Form array of commenter addrs
        String[] commenterAddrs = (String[])subscribers.toArray(new String[0]);
        
        //------------------------------------------
        // --- Form the messages to be sent -
        // Build separate owner and commenter (aka subscriber) messages
        
        // Determine with mime type to use for e-mail
        StringBuffer msg = new StringBuffer();
        StringBuffer ownermsg = new StringBuffer();
        boolean escapeHtml = !WebloggerRuntimeConfig.getBooleanProperty("users.comments.htmlenabled");
    //#MailUtil.java:327: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
        
        // first the commenter message
        
        if (!escapeHtml) {
            msg.append("<html><body style=\"background: white; ");
            msg.append(" color: black; font-size: 12px\">");
        }
        
        if (!StringUtils.isEmpty(commentObject.getName())) {
    //#MailUtil.java:336: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getName()
    //#MailUtil.java:336: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
            msg.append(commentObject.getName() + " "
    //#MailUtil.java:337: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getName()
                    + resources.getString("email.comment.wrote")+": ");
        } else {
            msg.append(resources.getString("email.comment.anonymous")+": ");
        }
        
        msg.append((escapeHtml) ? "\n\n" : "<br /><br />");
        
        msg.append((escapeHtml) ? Utilities.escapeHTML(commentObject.getContent())
    //#MailUtil.java:345: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getContent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getContent()
        : Utilities.transformToHTMLSubset(Utilities.escapeHTML(commentObject.getContent())));
        
        msg.append((escapeHtml) ? "\n\n----\n"
                : "<br /><br /><hr /><span style=\"font-size: 11px\">");
        msg.append(resources.getString("email.comment.respond") + ": ");
        msg.append((escapeHtml) ? "\n" : "<br />");
        
        // Build link back to comment
        String commentURL = WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogCommentsURL(weblog, null, entry.getAnchor(), true);
    //#MailUtil.java:354: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MailUtil.java:354: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#MailUtil.java:354: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#MailUtil.java:354: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogCommentsURL(Weblog, String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogCommentsURL(Weblog, String, String, bool)
        
        if (escapeHtml) {
            msg.append(commentURL);
        } else {
            msg.append("<a href=\""+commentURL+"\">"+commentURL+"</a></span>");
        }
        
        // next the owner message
        
        // First, list any messages from the system that were passed in:
        if (messages.getMessageCount() > 0) {
            ownermsg.append((escapeHtml) ? "" : "<p>");
            ownermsg.append(resources.getString("commentServlet.email.thereAreSystemMessages"));
            ownermsg.append((escapeHtml) ? "\n\n" : "</p>");
            ownermsg.append((escapeHtml) ? "" : "<ul>");
        }
        for (Iterator it = messages.getMessages(); it.hasNext();) {
            RollerMessage rollerMessage = (RollerMessage)it.next();
            ownermsg.append((escapeHtml) ? "" : "<li>");
            ownermsg.append(MessageFormat.format(resources.getString(rollerMessage.getKey()), (Object[])rollerMessage.getArgs()) );
            ownermsg.append((escapeHtml) ? "\n\n" : "</li>");
        }
        if (messages.getMessageCount() > 0) {
            ownermsg.append((escapeHtml) ? "\n\n" : "</ul>");
        }
        
        // Next, list any validation error messages that were passed in:
        if (messages.getErrorCount() > 0) {
            ownermsg.append((escapeHtml) ? "" : "<p>");
            ownermsg.append(resources.getString("commentServlet.email.thereAreErrorMessages"));
            ownermsg.append((escapeHtml) ? "\n\n" : "</p>");
            ownermsg.append((escapeHtml) ? "" : "<ul>");
        }
        for (Iterator it = messages.getErrors(); it.hasNext();) {
            RollerMessage rollerMessage = (RollerMessage)it.next();
            ownermsg.append((escapeHtml) ? "" : "<li>");
            ownermsg.append(MessageFormat.format(resources.getString(rollerMessage.getKey()), (Object[])rollerMessage.getArgs()) );
            ownermsg.append((escapeHtml) ? "\n\n" : "</li>");
        }
        if (messages.getErrorCount() > 0) {
            ownermsg.append((escapeHtml) ? "\n\n" : "</ul>");
        }
        
        ownermsg.append(msg);
        
        // add link to weblog edit page so user can login to manage comments
        ownermsg.append((escapeHtml) ? "\n\n----\n" :
            "<br /><br /><hr /><span style=\"font-size: 11px\">");
        ownermsg.append("Link to comment management page:");
        ownermsg.append((escapeHtml) ? "\n" : "<br />");
        
        Map<String, String> parameters = new HashMap();
        parameters.put("bean.entryId", entry.getId());
    //#MailUtil.java:407: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
        String deleteURL = WebloggerFactory.getWeblogger().getUrlStrategy().getActionURL(
    //#MailUtil.java:408: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MailUtil.java:408: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#MailUtil.java:408: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#MailUtil.java:408: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getActionURL(String, String, String, Map, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getActionURL(String, String, String, Map, bool)
                "comments", "/roller-ui/authoring", weblog.getHandle(), parameters, true);
        
        if (escapeHtml) {
            ownermsg.append(deleteURL);
        } else {
            ownermsg.append(
                    "<a href=\"" + deleteURL + "\">" + deleteURL + "</a></span>");
            msg.append("</Body></html>");
            ownermsg.append("</Body></html>");
        }
        
        String subject = null;
    //#MailUtil.java:420: Warning: unused assignment
    //#    unused assignment into subject
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    Attribs:  Uncertain
        if ((subscribers.size() > 1) ||
    //#MailUtil.java:421: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#MailUtil.java:421: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#MailUtil.java:421: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:equals(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:equals(String, String)
                (StringUtils.equals(commentObject.getEmail(), user.getEmailAddress()))) {
            subject= "RE: "+resources.getString("email.comment.title")+": ";
        } else {
            subject = resources.getString("email.comment.title") + ": ";
        }
        subject += entry.getTitle();
    //#MailUtil.java:427: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
        
        // send message to email recipients
        try {
            boolean isHtml = !escapeHtml;
            
            // Send separate messages to owner and commenters
            if(isHtml) {
                sendHTMLMessage(
    //#MailUtil.java:435: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#MailUtil.java:435: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    basic block: bb_108
    //#    assertion: (soft) init'ed(sendHTMLMessage.Param_1[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 773
    //#    VN: sendHTMLMessage.Param_1[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
                        from,
                        new String[]{user.getEmailAddress()},
                        null,
                        null,
                        subject,
                        ownermsg.toString());
            } else {
                sendTextMessage(
    //#MailUtil.java:443: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#MailUtil.java:443: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    basic block: bb_109
    //#    assertion: (soft) init'ed(sendTextMessage.Param_1[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 689
    //#    VN: sendTextMessage.Param_1[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
                        from,
                        new String[]{user.getEmailAddress()},
                        null,
                        null,
                        subject,
                        ownermsg.toString());
            }
            
            // now send to subscribers
            if (notifySubscribers && commenterAddrs.length > 0) {
                // If hiding commenter addrs, they go in Bcc: otherwise in the To: of the second message
                String[] to = hideCommenterAddrs ? null : commenterAddrs;
                String[] bcc = hideCommenterAddrs ? commenterAddrs : null;
                
                if(isHtml) {
                    sendHTMLMessage(
    //#MailUtil.java:459: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    basic block: bb_119
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 773
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:459: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    basic block: bb_119
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 773
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
                            from, 
                            to, 
                            null, 
                            bcc, 
                            subject, 
                            msg.toString());
                } else {
                    sendTextMessage(
    //#MailUtil.java:467: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    basic block: bb_120
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 689
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:467: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    basic block: bb_120
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 689
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
                            from, 
                            to, 
                            null, 
                            bcc, 
                            subject, 
                            msg.toString());
                }
            }
        } catch (Exception e) {
            log.warn("Exception sending comment notification mail", e);
    //#MailUtil.java:477: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object, Throwable)
            // This will log the stack trace if debug is enabled
            if (log.isDebugEnabled()) {
    //#MailUtil.java:479: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                log.debug(e);
    //#MailUtil.java:480: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            }
        }
        
        log.debug("Done sending email message");
    //#MailUtil.java:484: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    }
    //#MailUtil.java:485: end of method: void org.apache.roller.weblogger.util.MailUtil.sendEmailNotification(WeblogEntryComment, RollerMessages, I18nMessages, bool)
    

    public static void sendEmailApprovalNotifications(List<WeblogEntryComment> comments,
                                               I18nMessages resources) 
            throws MailingException {
        
        RollerMessages messages = new RollerMessages();
    //#MailUtil.java:492: method: void org.apache.roller.weblogger.util.MailUtil.sendEmailApprovalNotifications(List, I18nMessages)
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): " "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): " color: black; font-size: 12px">"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): ""._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "">"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "&#10;"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "&#10;&#10;"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "&#10;&#10;----&#10;"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): ": "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<.Body><.html>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<.a><.span>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<.li>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<.p>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<.ul>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<a href=""._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<br .>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<br .><br .>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<br .><br .><hr .><span style="font-size: 11px">"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<html><body style="background: white; "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<li>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<p>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "<ul>"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): ">"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "Error getting key "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "Exception sending comment mail: "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "Link to comment management page:"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "RE: "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "blind copying e-mail to: "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "commentServlet.email.thereAreErrorMessages"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "commentServlet.email.thereAreSystemMessages"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "copying e-mail to: "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "e-mail from: "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "email.comment.anonymous"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "email.comment.commentApproved"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "email.comment.respond"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "email.comment.title"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "email.comment.wrote"._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): "sending e-mail to: "._tainted
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): comments
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): javax.mail.Message$RecipientType.BCC
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): javax.mail.Message$RecipientType.CC
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): javax.mail.Message$RecipientType.TO
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): log
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/I18nMessages.log
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Descendant_Table[org/apache/roller/weblogger/util/RollerMessages$RollerMessage]
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Descendant_Table[others]
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Dispatch_Table.getArgs()[Ljava/lang/String;
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages$RollerMessage.__Dispatch_Table.getKey()Ljava/lang/String;
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages.__Descendant_Table[org/apache/roller/weblogger/util/RollerMessages]
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages.__Descendant_Table[others]
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getErrorCount()I
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getErrors()Ljava/util/Iterator;
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getMessageCount()I
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/RollerMessages.__Dispatch_Table.getMessages()Ljava/util/Iterator;
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.BR_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_A_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_BLOCKQUOTE_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_B_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_I_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_LI_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_OL_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_PRE_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_P_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.CLOSING_UL_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_A_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_BLOCKQUOTE_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_B_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_I_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_LI_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_OL_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_PRE_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_P_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.OPENING_UL_TAG_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): org/apache/roller/weblogger/util/Utilities.QUOTE_PATTERN
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): resources
    //#input(void sendEmailApprovalNotifications(List, I18nMessages)): resources.bundle
    //#pre[1] (void sendEmailApprovalNotifications(List, I18nMessages)): comments != null
    //#pre[2] (void sendEmailApprovalNotifications(List, I18nMessages)): (soft) log != null
    //#pre[3] (void sendEmailApprovalNotifications(List, I18nMessages)): (soft) resources != null
    //#pre[4] (void sendEmailApprovalNotifications(List, I18nMessages)): (soft) resources.bundle != null
    //#presumption(void sendEmailApprovalNotifications(List, I18nMessages)): java.util.Iterator:next(...)@493 != null
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:javax.mail.Transport:close
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.text.MessageFormat:format
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEmailComments
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEmailFromAddress
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.TreeSet
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getComments
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryComment:getNotify
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.String:matches
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Set:add
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Set:remove
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Set:toArray
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryComment:getName
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.ResourceBundle:getString
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryComment:getContent
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.commons.lang.StringUtils:replace
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.regex.Matcher:end
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.regex.Matcher:replaceAll
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogCommentsURL
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getActionURL
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.Set:size
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.commons.lang.StringUtils:equals
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void sendEmailApprovalNotifications(List, I18nMessages)): Effects-of-calling:java.util.ArrayList
    //#test_vector(void sendEmailApprovalNotifications(List, I18nMessages)): java.util.Iterator:hasNext(...)@493: {0}, {1}
        for (WeblogEntryComment comment : comments) {            
            
            // Send email notifications because a new comment has been approved
            sendEmailNotification(comment, messages, resources, true);

            // Send approval notification to author of approved comment
            sendEmailApprovalNotification(comment, resources);
        }
    }
    //#MailUtil.java:501: end of method: void org.apache.roller.weblogger.util.MailUtil.sendEmailApprovalNotifications(List, I18nMessages)
    
    
    /**
     * Send message to author of approved comment
     *
     * TODO: Make the addressing options configurable on a per-website basis.
     */
    public static void sendEmailApprovalNotification(WeblogEntryComment cd, 
                                                     I18nMessages resources) 
            throws MailingException {
        
        WeblogEntry entry = cd.getWeblogEntry();
    //#MailUtil.java:513: method: void org.apache.roller.weblogger.util.MailUtil.sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#MailUtil.java:513: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "&#10;&#10;"._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "Error getting key "._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "Exception sending comment mail: "._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "blind copying e-mail to: "._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "copying e-mail to: "._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "e-mail from: "._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "email.comment.commentApproved"._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): "sending e-mail to: "._tainted
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): cd
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): javax.mail.Message$RecipientType.BCC
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): javax.mail.Message$RecipientType.CC
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): javax.mail.Message$RecipientType.TO
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): log
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org/apache/roller/weblogger/util/I18nMessages.log
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): resources
    //#input(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): resources.bundle
    //#pre[1] (void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): cd != null
    //#pre[2] (void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): (soft) log != null
    //#pre[3] (void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): (soft) resources != null
    //#pre[4] (void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): (soft) resources.bundle != null
    //#presumption(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@539 != null
    //#presumption(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@539 != null
    //#presumption(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.pojos.Weblog:getEmailComments(...)@519 != null
    //#presumption(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@515 != null
    //#presumption(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@514 != null
    //#presumption(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry(...)@513 != null
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:javax.mail.Transport:close
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:java.util.ResourceBundle:getString
    //#unanalyzed(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#test_vector(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): java.lang.Boolean:booleanValue(...)@519: {1}, {0}
    //#test_vector(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.commons.lang.StringUtils:isEmpty(...)@528: {0}, {1}
    //#test_vector(void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)): org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(...)@518: {0}, {1}
        Weblog weblog = entry.getWebsite();
    //#MailUtil.java:514: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        User user = entry.getCreator();
    //#MailUtil.java:515: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
        
        // Only send email if email notificaiton is enabled
        boolean notify = WebloggerRuntimeConfig.getBooleanProperty("users.comments.emailnotify");
    //#MailUtil.java:518: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
        if (!notify || !weblog.getEmailComments().booleanValue()) {
    //#MailUtil.java:519: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getEmailComments()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getEmailComments()
            // notifications disabled, just bail
            return;
        }
        
        log.debug("Comment notification enabled ... preparing email");
    //#MailUtil.java:524: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        // use either the weblog configured from address or the site configured from address
        String from = weblog.getEmailFromAddress();
    //#MailUtil.java:527: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getEmailFromAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getEmailFromAddress()
        if(StringUtils.isEmpty(from)) {
    //#MailUtil.java:528: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
            // TODO: this should not be the users email address
            from = user.getEmailAddress();
    //#MailUtil.java:530: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
        }
        
        // form the message to be sent
        String subject = resources.getString("email.comment.commentApproved");
        
        StringBuffer msg = new StringBuffer();
        msg.append(resources.getString("email.comment.commentApproved"));
        msg.append("\n\n");
        msg.append(WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogCommentsURL(weblog, null, entry.getAnchor(), true));
    //#MailUtil.java:539: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MailUtil.java:539: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#MailUtil.java:539: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#MailUtil.java:539: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogCommentsURL(Weblog, String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogCommentsURL(Weblog, String, String, bool)
        
        // send message to author of approved comment
        try {
            sendTextMessage(
    //#MailUtil.java:543: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getEmail()
    //#MailUtil.java:543: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendTextMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(sendTextMessage.Param_1[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [15]
    //#    callee srcpos: 689
    //#    VN: sendTextMessage.Param_1[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid  Uncertain
                    from, // from
                    new String[] {cd.getEmail()}, // to
                    null, // cc
                    null, // bcc
                    subject, // subject
                    msg.toString()); // message
        } catch (Exception e) {
            log.warn("Exception sending comment mail: " + e.getMessage());
    //#MailUtil.java:551: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
            // This will log the stack trace if debug is enabled
            if (log.isDebugEnabled()) {
    //#MailUtil.java:553: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                log.debug(e);
    //#MailUtil.java:554: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            }
        }
        
        log.debug("Done sending email message");
    //#MailUtil.java:558: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    }
    //#MailUtil.java:559: end of method: void org.apache.roller.weblogger.util.MailUtil.sendEmailApprovalNotification(WeblogEntryComment, I18nMessages)
    
    
    // agangolli: Incorporated suggested changes from Ken Blackler.
    
    /**
     * This method is used to send a Message with a pre-defined
     * mime-type.
     *
     * @param from e-mail address of sender
     * @param to e-mail address(es) of recipients
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @param mimeType type of message, i.e. text/plain or text/html
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendMessage
            (
            String from,
            String[] to,
            String[] cc,
            String[] bcc,
            String subject,
            String content,
            String mimeType
            )
            throws MessagingException {
        
        MailProvider mailProvider = WebloggerStartup.getMailProvider();
    //#MailUtil.java:587: method: void org.apache.roller.weblogger.util.MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#MailUtil.java:587: Warning: method not available
    //#    -- call on MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: MailProvider org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider()
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): "copying e-mail to: "._tainted
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): "e-mail from: "._tainted
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): "sending e-mail to: "._tainted
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): bcc
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): bcc.length
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): bcc[0..4_294_967_295]
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): bcc[0..4_294_967_295]._tainted
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): cc
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): cc.length
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): cc[0..4_294_967_295]
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): cc[0..4_294_967_295]._tainted
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): content
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): from
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): log
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): mimeType
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): subject
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): to
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): to.length
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): to[0..4_294_967_295]
    //#input(void sendMessage(String, String[], String[], String[], String, String, String)): to[0..4_294_967_295]._tainted
    //#pre[2] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) bcc.length <= 4_294_967_295
    //#pre[3] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) init'ed(bcc[0..4_294_967_295])
    //#pre[6] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) cc.length <= 4_294_967_295
    //#pre[7] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) init'ed(cc[0..4_294_967_295])
    //#pre[11] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) log != null
    //#pre[15] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) to.length <= 4_294_967_295
    //#pre[16] (void sendMessage(String, String[], String[], String[], String, String, String)): (soft) init'ed(to[0..4_294_967_295])
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): init'ed(javax.mail.Message$RecipientType.BCC)
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): init'ed(javax.mail.Message$RecipientType.CC)
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): init'ed(javax.mail.Message$RecipientType.TO)
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): javax.mail.Message:getAllRecipients(...)@636 != null
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.roller.weblogger.business.MailProvider:getTransport(...)@642 != null
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): remainingAddresses.length@636 <= 4_294_967_295
    //#presumption(void sendMessage(String, String[], String[], String[], String, String, String)): remainingAddresses.length@636 <= 4_294_967_295
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): bcc: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): cc: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): to: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.commons.lang.StringUtils:isEmpty(...)@596: {1}, {0}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@599: {0}, {1}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@607: {0}, {1}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@617: {0}, {1}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@627: {0}, {1}
    //#test_vector(void sendMessage(String, String[], String[], String[], String, String, String)): org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider(...)@587: Inverse{null}, Addr_Set{null}
        if(mailProvider == null) {
            return;
        }
        
        Session session = mailProvider.getSession();
    //#MailUtil.java:592: Warning: method not available
    //#    -- call on Session org.apache.roller.weblogger.business.MailProvider:getSession()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: Session org.apache.roller.weblogger.business.MailProvider:getSession()
        Message message = new MimeMessage(session);
        
        // n.b. any default from address is expected to be determined by caller.
        if (! StringUtils.isEmpty(from)) {
    //#MailUtil.java:596: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
            InternetAddress sentFrom = new InternetAddress(from);
            message.setFrom(sentFrom);
            if (log.isDebugEnabled()) log.debug("e-mail from: " + sentFrom);
    //#MailUtil.java:599: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#MailUtil.java:599: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        
        if (to!=null) {
            InternetAddress[] sendTo = new InternetAddress[to.length];
            
            for (int i = 0; i < to.length; i++) {
                sendTo[i] = new InternetAddress(to[i]);
                if (log.isDebugEnabled()) log.debug("sending e-mail to: " + to[i]);
    //#MailUtil.java:607: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#MailUtil.java:607: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            }
            message.setRecipients(Message.RecipientType.TO, sendTo);
        }
        
        if (cc != null) {
            InternetAddress[] copyTo = new InternetAddress[cc.length];
            
            for (int i = 0; i < cc.length; i++) {
                copyTo[i] = new InternetAddress(cc[i]);
                if (log.isDebugEnabled()) log.debug("copying e-mail to: " + cc[i]);
    //#MailUtil.java:617: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#MailUtil.java:617: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            }
            message.setRecipients(Message.RecipientType.CC, copyTo);
        }
        
        if (bcc != null) {
            InternetAddress[] copyTo = new InternetAddress[bcc.length];
            
            for (int i = 0; i < bcc.length; i++) {
                copyTo[i] = new InternetAddress(bcc[i]);
                if (log.isDebugEnabled()) log.debug("blind copying e-mail to: " + bcc[i]);
    //#MailUtil.java:627: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#MailUtil.java:627: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            }
            message.setRecipients(Message.RecipientType.BCC, copyTo);
        }
        message.setSubject((subject == null) ? "(no subject)" : subject);
        message.setContent(content, mimeType);
        message.setSentDate(new java.util.Date());
        
        // First collect all the addresses together.
        Address[] remainingAddresses = message.getAllRecipients();
        int nAddresses = remainingAddresses.length;
    //#MailUtil.java:637: Warning: unused assignment
    //#    unused assignment into nAddresses
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
        boolean bFailedToSome = false;
        
        SendFailedException sendex = new SendFailedException("Unable to send message to some recipients");
        
        Transport transport = mailProvider.getTransport();
    //#MailUtil.java:642: Warning: method not available
    //#    -- call on Transport org.apache.roller.weblogger.business.MailProvider:getTransport()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    unanalyzed callee: Transport org.apache.roller.weblogger.business.MailProvider:getTransport()
        
        // Try to send while there remain some potentially good addresses
        try { 
            do {
                // Avoid a loop if we are stuck
                nAddresses = remainingAddresses.length;

                try {
                    // Send to the list of remaining addresses, ignoring the addresses attached to the message
                    transport.send(message, remainingAddresses);
                } catch(SendFailedException ex) {
                    bFailedToSome=true;
                    sendex.setNextException(ex);

                    // Extract the remaining potentially good addresses
                    remainingAddresses=ex.getValidUnsentAddresses();
                }
            } while (remainingAddresses!=null && remainingAddresses.length>0 && remainingAddresses.length!=nAddresses);
            
        } finally {
            transport.close();
        }
        
        if (bFailedToSome) throw sendex;
    //#MailUtil.java:666: ?conditional throw
    //#    bFailedToSome == 0
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendMessage(String, String[], String[], String[], String, String, String)
    //#    basic block: bb_40
    //#    assertion: bFailedToSome == 0
    //#    VN: bFailedToSome
    //#    Expected: {0}
    //#    Bad: {1}
    //#    Attribs:  Int  Exp in +/-1000  Exp singleton  Bad singleton  Bad overlaps +/-1000  Bad > Exp
    }
    //#MailUtil.java:667: end of method: void org.apache.roller.weblogger.util.MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    
    
    /**
     * This method is used to send a Text Message.
     *
     * @param from e-mail address of sender
     * @param to e-mail addresses of recipients
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendTextMessage
            (
            String from,
            String[] to,
            String[] cc,
            String[] bcc,
            String subject,
            String content
            )
            throws MessagingException {
        sendMessage(from, to, cc, bcc, subject, content, "text/plain; charset=utf-8");
    //#MailUtil.java:689: method: void org.apache.roller.weblogger.util.MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): "copying e-mail to: "._tainted
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): "e-mail from: "._tainted
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): "sending e-mail to: "._tainted
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): bcc
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): bcc.length
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): bcc[0..4_294_967_295]
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): bcc[0..4_294_967_295]._tainted
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): cc
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): cc.length
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): cc[0..4_294_967_295]
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): cc[0..4_294_967_295]._tainted
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): content
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): from
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): log
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): subject
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): to
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): to.length
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): to[0..4_294_967_295]
    //#input(void sendTextMessage(String, String[], String[], String[], String, String)): to[0..4_294_967_295]._tainted
    //#pre[2] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) bcc.length <= 4_294_967_295
    //#pre[3] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) init'ed(bcc[0..4_294_967_295])
    //#pre[6] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) cc.length <= 4_294_967_295
    //#pre[7] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) init'ed(cc[0..4_294_967_295])
    //#pre[11] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) log != null
    //#pre[14] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) to.length <= 4_294_967_295
    //#pre[15] (void sendTextMessage(String, String[], String[], String[], String, String)): (soft) init'ed(to[0..4_294_967_295])
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendTextMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:close
    }
    //#MailUtil.java:690: end of method: void org.apache.roller.weblogger.util.MailUtil.sendTextMessage(String, String[], String[], String[], String, String)
    
    
    /**
     * This method overrides the sendTextMessage to specify
     * one receiver and mulitple cc recipients.
     *
     * @param from e-mail address of sender
     * @param to e-mail addresses of recipients
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendTextMessage
            (
            String from,
            String to,
            String[] cc,
            String[] bcc,
            String subject,
            String content
            )
            throws MessagingException {
        String[] recipient = null;
    //#MailUtil.java:713: method: void org.apache.roller.weblogger.util.MailUtil.sendTextMessage(String, String, String[], String[], String, String)
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): "copying e-mail to: "._tainted
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): "e-mail from: "._tainted
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): "sending e-mail to: "._tainted
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): bcc
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): bcc.length
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): bcc[0..4_294_967_295]
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): bcc[0..4_294_967_295]._tainted
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): cc
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): cc.length
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): cc[0..4_294_967_295]
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): cc[0..4_294_967_295]._tainted
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): content
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): from
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): log
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): subject
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): to
    //#input(void sendTextMessage(String, String, String[], String[], String, String)): to._tainted
    //#pre[2] (void sendTextMessage(String, String, String[], String[], String, String)): (soft) bcc.length <= 4_294_967_295
    //#pre[3] (void sendTextMessage(String, String, String[], String[], String, String)): (soft) init'ed(bcc[0..4_294_967_295])
    //#pre[6] (void sendTextMessage(String, String, String[], String[], String, String)): (soft) cc.length <= 4_294_967_295
    //#pre[7] (void sendTextMessage(String, String, String[], String[], String, String)): (soft) init'ed(cc[0..4_294_967_295])
    //#pre[11] (void sendTextMessage(String, String, String[], String[], String, String)): (soft) log != null
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendTextMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:close
    //#test_vector(void sendTextMessage(String, String, String[], String[], String, String)): to: Addr_Set{null}, Inverse{null}
        if (to!=null) recipient = new String[] {to};
        
        sendMessage(from, recipient, cc, bcc, subject, content, "text/plain; charset=utf-8");
    //#MailUtil.java:716: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendTextMessage(String, String, String[], String[], String, String)
    //#    basic block: bb_3
    //#    assertion: (soft) init'ed(recipient[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [16]
    //#    callee srcpos: 587
    //#    VN: recipient[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    }
    //#MailUtil.java:717: end of method: void org.apache.roller.weblogger.util.MailUtil.sendTextMessage(String, String, String[], String[], String, String)
    
    
    /**
     * This method overrides the sendTextMessage to specify
     * only one receiver and cc recipients, rather than
     * an array of recipients.
     *
     * @param from e-mail address of sender
     * @param to e-mail address of recipient
     * @param cc e-mail address of cc recipient
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendTextMessage
            (
            String from,
            String to,
            String cc,
            String bcc,
            String subject,
            String content
            )
            throws MessagingException {
        String[] recipient = null;
    //#MailUtil.java:742: method: void org.apache.roller.weblogger.util.MailUtil.sendTextMessage(String, String, String, String, String, String)
    //#input(void sendTextMessage(String, String, String, String, String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendTextMessage(String, String, String, String, String, String)): "copying e-mail to: "._tainted
    //#input(void sendTextMessage(String, String, String, String, String, String)): "e-mail from: "._tainted
    //#input(void sendTextMessage(String, String, String, String, String, String)): "sending e-mail to: "._tainted
    //#input(void sendTextMessage(String, String, String, String, String, String)): bcc
    //#input(void sendTextMessage(String, String, String, String, String, String)): bcc._tainted
    //#input(void sendTextMessage(String, String, String, String, String, String)): cc
    //#input(void sendTextMessage(String, String, String, String, String, String)): cc._tainted
    //#input(void sendTextMessage(String, String, String, String, String, String)): content
    //#input(void sendTextMessage(String, String, String, String, String, String)): from
    //#input(void sendTextMessage(String, String, String, String, String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendTextMessage(String, String, String, String, String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendTextMessage(String, String, String, String, String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendTextMessage(String, String, String, String, String, String)): log
    //#input(void sendTextMessage(String, String, String, String, String, String)): subject
    //#input(void sendTextMessage(String, String, String, String, String, String)): to
    //#input(void sendTextMessage(String, String, String, String, String, String)): to._tainted
    //#pre[7] (void sendTextMessage(String, String, String, String, String, String)): (soft) log != null
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendTextMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Transport:close
    //#test_vector(void sendTextMessage(String, String, String, String, String, String)): bcc: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendTextMessage(String, String, String, String, String, String)): cc: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendTextMessage(String, String, String, String, String, String)): to: Addr_Set{null}, Inverse{null}
        String[] copy = null;
        String[] bcopy = null;
        
        if (to!=null) recipient = new String[] {to};
        if (cc!=null) copy = new String[] {cc};
        if (bcc!=null) bcopy = new String[] {bcc};
        
        sendMessage(from, recipient, copy, bcopy, subject, content, "text/plain; charset=utf-8");
    //#MailUtil.java:750: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendTextMessage(String, String, String, String, String, String)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(bcopy[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 587
    //#    VN: bcopy[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:750: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(cc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendTextMessage(String, String, String, String, String, String)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(copy[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 587
    //#    VN: copy[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:750: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendTextMessage(String, String, String, String, String, String)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(recipient[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [16]
    //#    callee srcpos: 587
    //#    VN: recipient[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    }
    //#MailUtil.java:751: end of method: void org.apache.roller.weblogger.util.MailUtil.sendTextMessage(String, String, String, String, String, String)
    
    
    /**
     * This method is used to send a HTML Message
     *
     * @param from e-mail address of sender
     * @param to e-mail address(es) of recipients
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendHTMLMessage
            (
            String from,
            String[] to,
            String[] cc,
            String[] bcc,
            String subject,
            String content
            )
            throws MessagingException {
        sendMessage(from, to, cc, bcc, subject, content, "text/html; charset=utf-8");
    //#MailUtil.java:773: method: void org.apache.roller.weblogger.util.MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): "copying e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): "e-mail from: "._tainted
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): "sending e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): bcc
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): bcc.length
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): bcc[0..4_294_967_295]
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): bcc[0..4_294_967_295]._tainted
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): cc
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): cc.length
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): cc[0..4_294_967_295]
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): cc[0..4_294_967_295]._tainted
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): content
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): from
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): log
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): subject
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): to
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): to.length
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): to[0..4_294_967_295]
    //#input(void sendHTMLMessage(String, String[], String[], String[], String, String)): to[0..4_294_967_295]._tainted
    //#pre[2] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) bcc.length <= 4_294_967_295
    //#pre[3] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) init'ed(bcc[0..4_294_967_295])
    //#pre[6] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) cc.length <= 4_294_967_295
    //#pre[7] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) init'ed(cc[0..4_294_967_295])
    //#pre[11] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) log != null
    //#pre[14] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) to.length <= 4_294_967_295
    //#pre[15] (void sendHTMLMessage(String, String[], String[], String[], String, String)): (soft) init'ed(to[0..4_294_967_295])
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendHTMLMessage(String, String[], String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:close
    }
    //#MailUtil.java:774: end of method: void org.apache.roller.weblogger.util.MailUtil.sendHTMLMessage(String, String[], String[], String[], String, String)
    
    
    /**
     * This method overrides the sendHTMLMessage to specify
     * only one sender, rather than an array of senders.
     *
     * @param from e-mail address of sender
     * @param to e-mail address of recipients
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendHTMLMessage
            (
            String from,
            String to,
            String cc,
            String bcc,
            String subject,
            String content
            )
            throws MessagingException {
        String[] recipient = null;
    //#MailUtil.java:797: method: void org.apache.roller.weblogger.util.MailUtil.sendHTMLMessage(String, String, String, String, String, String)
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): "copying e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): "e-mail from: "._tainted
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): "sending e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): bcc
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): bcc._tainted
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): cc
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): cc._tainted
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): content
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): from
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): log
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): subject
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): to
    //#input(void sendHTMLMessage(String, String, String, String, String, String)): to._tainted
    //#pre[7] (void sendHTMLMessage(String, String, String, String, String, String)): (soft) log != null
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendHTMLMessage(String, String, String, String, String, String)): Effects-of-calling:javax.mail.Transport:close
    //#test_vector(void sendHTMLMessage(String, String, String, String, String, String)): bcc: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendHTMLMessage(String, String, String, String, String, String)): cc: Addr_Set{null}, Inverse{null}
    //#test_vector(void sendHTMLMessage(String, String, String, String, String, String)): to: Addr_Set{null}, Inverse{null}
        String[] copy = null;
        String[] bcopy = null;
        
        if (to!=null) recipient = new String[] {to};
        if (cc!=null) copy = new String[] {cc};
        if (bcc!=null) bcopy = new String[] {bcc};
        
        sendMessage(from, recipient, copy, bcopy, subject, content, "text/html; charset=utf-8");
    //#MailUtil.java:805: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(bcc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendHTMLMessage(String, String, String, String, String, String)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(bcopy[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(bcc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 587
    //#    VN: bcopy[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:805: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(cc[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendHTMLMessage(String, String, String, String, String, String)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(copy[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(cc[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 587
    //#    VN: copy[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#MailUtil.java:805: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendHTMLMessage(String, String, String, String, String, String)
    //#    basic block: bb_7
    //#    assertion: (soft) init'ed(recipient[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [16]
    //#    callee srcpos: 587
    //#    VN: recipient[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    }
    //#MailUtil.java:806: end of method: void org.apache.roller.weblogger.util.MailUtil.sendHTMLMessage(String, String, String, String, String, String)
    
    
    /**
     * This method overrides the sendHTMLMessage to specify
     * one receiver and mulitple cc recipients.
     *
     * @param from e-mail address of sender
     * @param to e-mail address of recipient
     * @param cc e-mail addresses of recipients
     * @param subject subject of e-mail
     * @param content the body of the e-mail
     * @throws MessagingException the exception to indicate failure
     */
    public static void sendHTMLMessage
            (
            String from,
            String to,
            String[] cc,
            String[] bcc,
            String subject,
            String content
            )
            throws MessagingException {
        String[] recipient = null;
    //#MailUtil.java:830: method: void org.apache.roller.weblogger.util.MailUtil.sendHTMLMessage(String, String, String[], String[], String, String)
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): "blind copying e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): "copying e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): "e-mail from: "._tainted
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): "sending e-mail to: "._tainted
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): bcc
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): bcc.length
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): bcc[0..4_294_967_295]
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): bcc[0..4_294_967_295]._tainted
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): cc
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): cc.length
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): cc[0..4_294_967_295]
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): cc[0..4_294_967_295]._tainted
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): content
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): from
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): javax.mail.Message$RecipientType.BCC
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): javax.mail.Message$RecipientType.CC
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): javax.mail.Message$RecipientType.TO
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): log
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): subject
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): to
    //#input(void sendHTMLMessage(String, String, String[], String[], String, String)): to._tainted
    //#pre[2] (void sendHTMLMessage(String, String, String[], String[], String, String)): (soft) bcc.length <= 4_294_967_295
    //#pre[3] (void sendHTMLMessage(String, String, String[], String[], String, String)): (soft) init'ed(bcc[0..4_294_967_295])
    //#pre[6] (void sendHTMLMessage(String, String, String[], String[], String, String)): (soft) cc.length <= 4_294_967_295
    //#pre[7] (void sendHTMLMessage(String, String, String[], String[], String, String)): (soft) init'ed(cc[0..4_294_967_295])
    //#pre[11] (void sendHTMLMessage(String, String, String[], String[], String, String)): (soft) log != null
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.startup.WebloggerStartup:getMailProvider
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getSession
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.internet.MimeMessage
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.internet.InternetAddress
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setFrom
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setRecipients
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSubject
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setContent
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:setSentDate
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Message:getAllRecipients
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:org.apache.roller.weblogger.business.MailProvider:getTransport
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:send
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:setNextException
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.SendFailedException:getValidUnsentAddresses
    //#unanalyzed(void sendHTMLMessage(String, String, String[], String[], String, String)): Effects-of-calling:javax.mail.Transport:close
    //#test_vector(void sendHTMLMessage(String, String, String[], String[], String, String)): to: Addr_Set{null}, Inverse{null}
        if (to!=null) recipient = new String[] {to};
        
        sendMessage(from, recipient, cc, bcc, subject, content, "text/html; charset=utf-8");
    //#MailUtil.java:833: ?precondition failure
    //#    org/apache/roller/weblogger/util/MailUtil.sendMessage: (soft) init'ed(to[0..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.MailUtil
    //#    method: void sendHTMLMessage(String, String, String[], String[], String, String)
    //#    basic block: bb_3
    //#    assertion: (soft) init'ed(recipient[0..4_294_967_295])
    //#    callee: void org/apache/roller/weblogger/util/MailUtil.sendMessage(String, String[], String[], String[], String, String, String)
    //#    callee assertion: (soft) init'ed(to[0..4_294_967_295])
    //#    callee file: MailUtil.java
    //#    callee precondition index: [16]
    //#    callee srcpos: 587
    //#    VN: recipient[0..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    }
    //#MailUtil.java:834: end of method: void org.apache.roller.weblogger.util.MailUtil.sendHTMLMessage(String, String, String[], String[], String, String)
    
    
    /**
     * An exception thrown if there is a problem sending an email.
     */
    public class MailingException extends WebloggerException {
    //#MailUtil.java:840: end of method: void org.apache.roller.weblogger.util.MailUtil.org.apache.roller.weblogger.util.MailUtil()
        public MailingException(Throwable t) {
    //#MailUtil.java:841: method: void org.apache.roller.weblogger.util.MailUtil$MailingException.org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)
    //#input(void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)): Param_1
    //#input(void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)): t
    //#input(void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)): this
    //#output(void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)): this.this$0
    //#post(void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)): this.this$0 == Param_1
    //#post(void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)): init'ed(this.this$0)
            super(t);
    //#MailUtil.java:842: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.WebloggerException(Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.MailUtil$MailingException
    //#    method: void org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)
    //#    unanalyzed callee: void org.apache.roller.weblogger.WebloggerException(Throwable)
        }
    //#MailUtil.java:843: end of method: void org.apache.roller.weblogger.util.MailUtil$MailingException.org.apache.roller.weblogger.util.MailUtil$MailingException(MailUtil, Throwable)
    }
}
    //#output(org.apache.roller.weblogger.util.MailUtil$MailingException__static_init): __Descendant_Table[org/apache/roller/weblogger/util/MailUtil$MailingException]
    //#post(org.apache.roller.weblogger.util.MailUtil$MailingException__static_init): __Descendant_Table[org/apache/roller/weblogger/util/MailUtil$MailingException] == &__Dispatch_Table
    //#MailUtil.java:: end of method: org.apache.roller.weblogger.util.MailUtil$MailingException.org.apache.roller.weblogger.util.MailUtil$MailingException__static_init
    //#MailUtil.java:: end of class: org.apache.roller.weblogger.util.MailUtil$MailingException
    //#MailUtil.java:: end of class: org.apache.roller.weblogger.util.MailUtil
