org.starhope.appius.messaging
Class Mail

java.lang.Object
  extended by org.starhope.appius.messaging.Mail

public class Mail
extends Object

Author:
brpocock

Constructor Summary
Mail()
           
 
Method Summary
static String getDomainPart(String address)
          This extracts the mail domain from the address.
static String getLocalPart(String address)
          Extracts the local-part specification out of an eMail address, removing any comment strings, and returns something like what people naïvely assume is a valid eMail address.
static boolean isValidMail(String address)
          Determine whether an eMail address might be valid.
static String readTemplate(String templateName)
          Reads in a template file from the appropriate folder
static void sendPasswordRecoveryMail(User user, String template, String password)
           
static void sendSignupMail(User user, String parentMail)
          Update the email address for the user and then send an enrollment email to the address.
static void sendTemplateMail(User user, boolean mailParent, String templateName, String subject, String passwordOrNull, String callback)
           
static void validateMail(String address)
          Forbids recently-bounced addresses from being used as well.
static void validateMXDomain(String domainName)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Mail

public Mail()
Method Detail

getDomainPart

public static String getDomainPart(String address)
                            throws DataException
This extracts the mail domain from the address. Note that the mail domain is not implicitly validated in this routine: it is only extracted as a string. Note that, unlike "real" mail systems, this will NOT add an implicit "@tootsville.com" or similar to the end of a local-part-only address. (Personally, I think that's a bad idea in this case. ~BRP)

Parameters:
address - An eMail address in RFC-822 format
Returns:
The domain-part string
Throws:
DataException - if the domain-part can't be found, doesn't conform to DNS requirements for a domain string, or the address doesn't have an @ sign to declare a domain part at all.

getLocalPart

public static String getLocalPart(String address)
                           throws DataException
Extracts the local-part specification out of an eMail address, removing any comment strings, and returns something like what people naïvely assume is a valid eMail address. This follows the RFC-822 requirements for a valid address, instead of imposing some arbitrary limits upon what we'll accept.

Parameters:
address - An eMail address string
Returns:
The local-part (mailbox or delivery instructions part) of the address
Throws:
DataException - if the address does not conform to RFC-822 requirements

isValidMail

public static boolean isValidMail(String address)
Determine whether an eMail address might be valid.

Parameters:
address - eMail address string
Returns:
false, if the address is provably invalid. true, if it might be valid.

readTemplate

public static String readTemplate(String templateName)
                           throws FileNotFoundException,
                                  IOException,
                                  NotFoundException
Reads in a template file from the appropriate folder

Parameters:
templateName - the template file
Returns:
the contents of the template file
Throws:
FileNotFoundException - If the template file can't be found
IOException - If the template file can't be read
NotFoundException - If the name of the template file can't be found in BraqueConfig

sendPasswordRecoveryMail

public static void sendPasswordRecoveryMail(User user,
                                            String template,
                                            String password)
                                     throws FileNotFoundException,
                                            IOException,
                                            NotFoundException
Parameters:
user - The user who forgot his/her password
template - The message template
password - The password to inject
Throws:
NotFoundException - ??
IOException - if the template can't be read
FileNotFoundException - if the template isn't found

sendSignupMail

public static void sendSignupMail(User user,
                                  String parentMail)
                           throws FileNotFoundException,
                                  IOException,
                                  NotFoundException,
                                  DataException,
                                  NamingException
Update the email address for the user and then send an enrollment email to the address.

Parameters:
user - User name that should be updated.
parentMail - Address to send the email to.
Throws:
IOException - if the template can't be read or something similar
FileNotFoundException - if the template file is missing
NotFoundException - if the template file is not found
NamingException - if the eMail address is invalid
DataException - if something else bad happens

sendTemplateMail

public static void sendTemplateMail(User user,
                                    boolean mailParent,
                                    String templateName,
                                    String subject,
                                    String passwordOrNull,
                                    String callback)
                             throws FileNotFoundException,
                                    IOException,
                                    NotFoundException
Parameters:
user - The user to whom the mail should be sent (or, the user's parent, if selected)
mailParent - If true, mail to the user's parent.
templateName - The name of the mail message template file
subject - The subject to apply to the eMail.
passwordOrNull - The user's password, or (usually) a null. (Literal null, please; not just a null string.)
callback - A cookie or URL that can be inserted into the template as well
Throws:
FileNotFoundException - if the template is not found
IOException - failure reading template
NotFoundException - ...

validateMail

public static void validateMail(String address)
                         throws DataException,
                                NamingException
Forbids recently-bounced addresses from being used as well.

Parameters:
address - Any RFC-2822-valid eMail address string
Throws:
DataException - if the address isn't appropriate somehow (e.g. bad format)
NamingException - if the JNDI DNS provider fails (bubble up)
See Also:
BadMailList

validateMXDomain

public static void validateMXDomain(String domainName)
                             throws NamingException,
                                    DataException
Parameters:
domainName - the domain name for which we're looking for a mail exchanger
Throws:
NamingException - if the JNDI provider fails
DataException - if the domain does not have an MX record in DNS