Zacznijmy od napisania klasy obsługującej wysyłanie maili:
package pl.javazpiwnicy;Następnie napiszemy beana do zarządzania użytkownikiem:
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailManager
{
String addressFrom = "<nasze_konto>@gmail.com";
String temat = "Rejestracja sie powiodla!";
public void wyslij(String login, String haslo, String email) throws AddressException, MessagingException
{
String tresc = "Twoj login: " + login + "\n" + "Twoje haslo: " + haslo;
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
Authenticator auth = new SMTPAuthenticator();
Session sesja = Session.getInstance(props, auth);
MimeMessage wiadomosc = new MimeMessage(sesja);
wiadomosc.setFrom(new InternetAddress("<nasze_konto>@gmail.com"));
wiadomosc.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
wiadomosc.setSubject(temat);
wiadomosc.setText(tresc);
Transport.send(wiadomosc);
}
private class SMTPAuthenticator extends javax.mail.Authenticator
{
public PasswordAuthentication getPasswordAuthentication()
{
try
{
String username = "<nasz_login_na_gmaila>";
String password = "<nasze_haslo>";
return new PasswordAuthentication(username, password);
}catch (Exception e) {
}
return null;
}
}
}
package pl.javazpiwnicy;Teraz przyszła kolej na dodatkowy wpis w
import java.util.Random;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
public class User
{
private String login;
private String email;
private String haslo;
private MailManager mm = new MailManager();
public String getLogin()
{
return login;
}
public void setLogin(String login)
{
this.login = login;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
private void setHaslo()
{
Random r = new Random();
haslo = Long.toString(Math.abs(r.nextLong()), 27).substring(0, 8);
}
public String rejestruj() throws AddressException, MessagingException
{
setHaslo();
mm.wyslij(login, haslo, email);
return "success";
}
}
f
aces-config.xml
:<managed-bean>Na koniec stworzymy bardzo prosty formularz, zawierający dwa pola do wpisania: login i adres maila:
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>pl.javazpiwnicy.User</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>Klikniecie przycisku rejestruj powinno spowodować wysłanie losowo wygenerowanego hasła na maila użytkownika. W ten sposób także łatwo potwierdzimy autentyczność adresu e-mail. Kod wydaje się w miarę łatwy, więc nie będę go wyjaśniał, jakby były pytania to proszę pisać w komentarzach. A oto jak wygląda struktura katalogów tego projektu u mnie:
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form>
<h:panelGrid columns="2">
<h:outputText value="Login"/><h:inputText value="#{user.login}"/>
<h:outputText value="E-mail"/><h:inputText value="#{user.email}"/>
<h:commandButton action="#{user.rejestruj}" value="Rejestruj"/>
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
Na koniec dodam jeszcze prostą funkcję na szyfrowanie hasła algorytmem md5, przyda się kiedy będziecie wygenerowane hasło chcieli wrzucić do bazy:
private String makeMD5(String password) throws NoSuchAlgorithmException
{
MessageDigest m = MessageDigest.getInstance( "MD5" );
m.update( password.getBytes(), 0, password.length() );
return new BigInteger( 1, m.digest() ).toString( 16 );
}
Brak komentarzy:
Prześlij komentarz