Index: trunk/src/org/expeditee/auth/Actions.java
===================================================================
--- trunk/src/org/expeditee/auth/Actions.java	(revision 1339)
+++ trunk/src/org/expeditee/auth/Actions.java	(revision 1340)
@@ -25,4 +25,5 @@
 import java.util.Map;
 import java.util.Optional;
+import java.util.Scanner;
 import java.util.stream.Collectors;
 
@@ -258,5 +259,40 @@
 	
 	public static void AuthResetPasswordPt1() {
-		MessageBay.displayMessage("AuthResetPasswordPt1");
+		Collection<Text> textItems = DisplayController.getCurrentFrame().getTextItems();
+		Optional<Map<AuthenticationTag, String>> userdata = AuthenticationTag.fetchUserData(textItems, false, AuthenticationTag.Username);
+		if (userdata.isPresent()) {
+			Map<AuthenticationTag, String> userData = userdata.get();
+			
+			String username = userData.get(AuthenticationTag.Username);
+			Path credentialsDirPath = Paths.get(FrameIO.PROFILE_PATH).resolve(username).resolve(username + "-credentials");
+			Path credentialsFilePath = credentialsDirPath.resolve("credentials.inf");
+			String fileName = null;
+			if (credentialsFilePath.toFile().exists()) {
+				try (Scanner in = new Scanner(credentialsFilePath)) {
+					fileName = in.nextLine();
+				} catch (IOException e) {
+					MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
+					return;
+				}
+			} else {
+				MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
+				return;
+			}
+			
+			int number = Integer.parseInt(fileName.replace(".exp", ""));
+			Frame credentialsFrame = FrameIO.LoadFrame(username + number, FrameIO.PROFILE_PATH);
+			textItems = credentialsFrame.getTextItems();
+			textItems.removeIf(text -> !text.getText().startsWith("Email: "));
+			if (textItems.isEmpty()) {
+				MessageBay.errorMessage("Unable to locate public email for specified user, are they registered on this computer?");
+				return;
+			} else {
+				Text emailText = textItems.iterator().next();
+				String email = emailText.getText().replace("Email: ", "");
+				userData.put(AuthenticationTag.Email, email);
+				Password.generateAndDeliverIntergalacticNumber(userData);
+				MessageBay.displayMessage("A Intergalactic number has been sent to the email associated with your account.  Enter it below to proceed.");
+			}
+		}
 	}
 	
@@ -434,37 +470,4 @@
 	}
 	
-//			// establish properties
-//			final String from = "noreply@expeditee.com";
-//			final Properties properties = System.getProperties();
-//			
-//			properties.setProperty("mail.transport.protocol", "smtp");
-//			properties.setProperty("mail.smtp.host", "smtp.gmail.com");
-//			properties.setProperty("mail.smtp.port", "465");
-//			properties.setProperty("mail.smtp.starttls.enable", "true");
-//			properties.setProperty("mail.smtp.auth", "true");
-//			properties.setProperty("mail.smtp.debug", "true");
-//			properties.setProperty("mail.smtp.auth", "true");
-//			properties.setProperty("mail.smtp.socketFactory.port", "465");
-//			properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
-//			properties.setProperty("mail.smtp.socketFactory.fallback", "false");
-//			
-//			final Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
-//				@Override
-//				protected PasswordAuthentication getPasswordAuthentication() {
-//					return new PasswordAuthentication("noreply.expeditee", "intergalacticnumber");
-//				};
-//			});
-
-//				// construct email message
-//				final MimeMessage message = new MimeMessage(session);
-//				message.setFrom(new InternetAddress(from));
-//				message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
-//				message.setSubject("Expeditee Password Recovery");
-//				message.setText(intergalacticNumber);
-//				
-//				// send email message
-//				Transport.send(message);
-
-
 	public static void TickBox(final Text item) {
 		if (item.getBackgroundColor() != Colour.RED) {
Index: trunk/src/org/expeditee/auth/account/Password.java
===================================================================
--- trunk/src/org/expeditee/auth/account/Password.java	(revision 1339)
+++ trunk/src/org/expeditee/auth/account/Password.java	(revision 1340)
@@ -8,6 +8,14 @@
 import java.sql.SQLException;
 import java.util.Map;
+import java.util.Properties;
 
 import javax.crypto.SecretKey;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
 
 import org.expeditee.auth.AuthenticatorBrowser;
@@ -35,9 +43,50 @@
 		}
 	}
-	
-	public static void forgotPassword(Map<AuthenticationTag, String> userdata) {
-		String username = userdata.get(AuthenticationTag.Username);
-		String newpassword = userdata.get(AuthenticationTag.NewPassword);
-		//AuthenticatorBrowser.getInstance().putKey(label, password, key);
+
+	public static void generateAndDeliverIntergalacticNumber(Map<AuthenticationTag, String> userData) {
+		String username = userData.get(AuthenticationTag.Username);
+		String email = userData.get(AuthenticationTag.Email);
+		try {
+			// Generate message text.
+			String intergalacticNumber = AuthenticatorBrowser.getInstance().newIntergalacticNumber(username, email);
+			String nl = System.getProperty("line.separator");
+			StringBuilder sb = new StringBuilder();
+			sb.append("You are receiving this email because someone is attempting to reset your Expeditee password." + nl);
+			sb.append("If you did not make this request then no action is required." + nl);
+			sb.append("If it was you who made this request, the following string of characters is your intergalactic number: " + intergalacticNumber + nl);
+			
+			// Establish properties for email.
+			Properties properties = System.getProperties();
+			properties.setProperty("mail.transport.protocol", "smtp");
+			properties.setProperty("mail.smtp.host", "smtp.gmail.com");
+			properties.setProperty("mail.smtp.port", "465");
+			properties.setProperty("mail.smtp.starttls.enable", "true");
+			properties.setProperty("mail.smtp.auth", "true");
+			properties.setProperty("mail.smtp.debug", "true");
+			properties.setProperty("mail.smtp.auth", "true");
+			properties.setProperty("mail.smtp.socketFactory.port", "465");
+			properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+			properties.setProperty("mail.smtp.socketFactory.fallback", "false");
+			
+			Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
+				@Override
+				protected PasswordAuthentication getPasswordAuthentication() {
+					return new PasswordAuthentication("noreply.expeditee", "intergalacticnumber");
+				};
+			});
+			
+			// construct email message
+			final MimeMessage message = new MimeMessage(session);
+			message.setFrom(new InternetAddress("noreply@expeditee.com"));
+			message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
+			message.setSubject("Expeditee Password Recovery");
+			message.setText(sb.toString());
+			
+			// send email message
+			Transport.send(message);		
+		} catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | ClassNotFoundException
+				| IOException | SQLException | MessagingException e) {
+			e.printStackTrace();
+		}
 	}
 }
