Example Number 6.13

Example Name: Email.asr

Language: ActionScript 1.0

Version: 1.0.0

Code:

function send(to, from, subject, message) {
  try {
    var mailobj = Packages.javax.mail;
    var props = new java.util.Properties();
    // Substitute your SMTP server address here
    props.put("mail.smtp.host","192.168.0.31");
    var mySession = new mailobj.Session.getInstance(props);
    var myMessage = new mailobj.internet.MimeMessage(mySession);
    var myToField = new mailobj.internet.InternetAddress(to);
    var myFromField = new mailobj.internet.InternetAddress(from);
    var recipientType = mailobj.Message.RecipientType.TO;
    myMessage.setFrom(myFromField);
    myMessage.addRecipients(recipientType, myToField);
    myMessage.setSubject(subject);
    myMessage.setText(message);
    mailobj.Transport.send(myMessage);
  } catch(e) {
    throw ("Error in sending email:" + e);
  }
  return true;
}


function Inbox(myHost, myUsername, myPassword) {
  // The Inbox object opens the connection to the POP3 server
  // and provides methods to receive messages and close connections
  var mailobj = Packages.javax.mail;
  var props = new java.util.Properties();
  var mySession = new mailobj.Session.getInstance(props);
  this.popAccount = mySession.getStore("pop3");
  this.popAccount.connect(myHost, myUsername, myPassword);
  this.folder = this.popAccount.getFolder("INBOX");
  this.folder.open(mailobj.Folder.READ_ONLY);

  // The getMessages method retrieves all messages
  this.getMessages = function() {
    return this.folder.getMessages()
  };

  // The getMessage method retrieves one message given a message number
  this.getMessage = function(messageNumber) {
    return this.folder.getMessage(messageNumber);
  };
  
  // The close() method simply closes connections to the POP3 server
  this.close = function() {
    this.folder.close(false);
    this.popAccount.close();
  }
}

// retrieveMessages() retrieves a list of headers given three arguments:
//  myHost: POP3 account, myUsername: login name, myPassword: password
function retrieveMessages(myHost, myUsername, myPassword) {
  var myInbox = new Inbox(myHost, myUsername, myPassword);
  var myMessages = myInbox.getMessages();
  // the raw headers can’t be sent thru Flash Remoting, so we serialize 
  // them manually
  var serializedHeaders = serializeHeaders(myMessages);
  // close the connection to the inbox
  myInbox.close();
  return serializedHeaders;
}

// retrieveMessage() retrieve one message given three arguments:
//  myHost: POP3 account, myUsername: login name, myPassword: password
function retrieveMessage(myHost, myUsername, myPassword, messageNumber) {
  var myInbox = new Inbox(myHost, myUsername, myPassword);
  var myMessage = myInbox.getMessage(messageNumber);  
  // the raw message can’t be sent thru Flash Remoting, so we serialize 
  // it manually
  var serializedMessage = serializeMessage(myMessage);
  // close the connection to the inbox
  myInbox.close();
  return serializedMessage;
}

// serializeHeaders() takes a messages array and extracts/serializes
// the header information (from, subject, messagenumber)
function serializeHeaders(messages) {
  var serializedHeaders = new Array();
  var header;
  for (var i=0; i < messages.length; i++) {
    // call our own general purpose header serialization routine
    header = serializeHeader(messages[i]);
    serializedHeaders.push(header);
  }
  return serializedHeaders;
}

// serializeHeader() takes one message argument and extracts header information
function serializeHeader(message) {
  var header = new Object();
  header.messageNumber = message.getMessageNumber();
  header.from = message.getFrom();
  header.subject = message.getSubject();
  return header;
}

// serializeMessage() takes a message as an argument and extracts ONLY 
// the text portion of the message. The rest of the parts are simply 
// counted as attachments. You can expand this function to return other
// parts of messages as well. 
function serializeMessage(message) {
  var serializedMessage = serializeHeader(message);
  serializedMessage.attachments = 0;
  var tempPart;
  if(message.isMimeType("multipart/*")) {
    var content = message.getContent();
    for(var i=0; i<content.getCount(); i++) {
      tempPart = content.getBodyPart(i);
      if(tempPart.isMimeType("text/plain")) {
        serializedMessage.text = tempPart.getContent();
      } else {
          serializedMessage.attachments++;
      }
    }
  } else {
    if(message.isMimeType("text/plain")) {
      serializedMessage.text = message.getContent();
    } else {
      serializedMessage.attachments++;
    }
  }
  return serializedMessage;
}

Download code text

Download chapter example files