2016-04-25 5 views
0

Я разрабатываю веб-приложение с бэкэдом на основе jsp для функциональности. Пока любой пользователь может зарегистрироваться и войти в систему без каких-либо процедурных шагов. Чтобы сделать веб-приложение более аутентичным, я хотел бы иметь функцию, посредством которой пользователь подписывается и получает уведомление по электронной почте, которое дает им приветственное сообщение и ссылку, которая проверяет их учетную запись. Какой был бы лучший псевдокод для работы и как бы я интегрировал свою регистрационную форму с сервером электронной почты, который отправляет уведомление электронной почте пользователю?JSP-веб-приложение Уведомление по электронной почте о регистрации и проверке учетной записи

ответ

0

Вы можете использовать javax.mail API для отправки уведомлений по электронной почте. Ниже приведен полный функциональный код, в котором используется ключ активации.

public static void sendMail(String toAddress,String user,String psw, String key){ 

    final String msg = "<html><body><h3>** THIS IS AN AUTOMATED MESSAGE - PLEASE, DO NOT REPLY **</h3>This e-mail has been sent to you automatically as part of the registration process.<br> " 
      +"To activate your account, click the activation link below.<br><br>"+key+"</body></html>"; 
    Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); 
    final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
    Properties properties = System.getProperties(); 
    properties.setProperty("mail.smtp.host", "mail.dom.info"); 
    properties.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); 
    properties.setProperty("mail.smtp.socketFactory.fallback", "false"); 
    properties.setProperty("mail.smtps.auth", "true");  
    properties.put("mail.smtps.quitwait", "false"); 

    Session session = Session.getDefaultInstance(properties); 
    try{ 
     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(user)); 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress)); 

     message.setSubject("Your account activation"); 
     // message.setText(msg, "utf-8"); 
     message.setContent(msg, "text/html"); 
     message.setSentDate(new Date()); 
     SMTPTransport transport = (SMTPTransport)session.getTransport("smtps"); 

     transport.connect("mail.dom.info", user, psw); 
     transport.sendMessage(message, message.getAllRecipients());  
     transport.close(); 
     //System.out.println("Message sent...."); 
     }catch (MessagingException e) { 
     e.printStackTrace(); 
     } 
} 

Обратите внимание, что вы должны указать свой SMTP-сервер (в данном случае mail.dom.info), а также имя пользователя и пароль для сервера (вы должны получить эту информацию из вашего веб-хостинг-провайдера). Последним параметром является ключ активации.

В этом примере также используется кодировка HTML для сообщения.

0
Apache Commons Email API is also available for sending E-Mail. 

If you have gmail account than these are few gmail account SMTP configuration using this you can send E-mail. 

Gmail SMTP server name: smtp.gmail.com 


Gmail SMTP username: your Gmail address 


Gmail SMTP password: your password 


Gmail SMTP port: 465 

using this configuration you can send email using your gmail account. For other service provider you have to find its SMTP settings and provide in your api configuration. 

Using apache commons api its quite easy like this : 

Email email = new SimpleEmail(); 
email.setHostName("smtp.googlemail.com"); 
email.setSmtpPort(465); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setSSLOnConnect(true); 
email.setFrom("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
email.send(); 


You can find more example from this : [1]:https://commons.apache.org/proper/commons-email/userguide.html