邮箱验证是一个很常见的功能了,基本上每一个网站都会用的到,java也有专门的jar来处理邮件发送等服务,这里只是简单的实现一下发送邮件的功能,具体jar包就再也不提供了,我会把全部须要引用的包都贴出来,方便你们copy。直奔主题:html
第一步:封装发件人帐号密码java
import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * 发件人帐号密码 * @author zhangdi * */ public class MailAuthenticator extends Authenticator{ public static String USERNAME = ""; public static String PASSWORD = ""; public MailAuthenticator() { } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USERNAME, PASSWORD); } }
第二步:提供发送操做类web
import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart;/** * 邮件发送操做类 * * @author zhangdi * */ public class MailOperation { /** * 发送邮件 * @param user 发件人邮箱 * @param password 受权码(注意不是邮箱登陆密码) * @param host * @param from 发件人 * @param to 接收者邮箱 * @param subject 邮件主题 * @param content 邮件内容 * @return success 发送成功 failure 发送失败 * @throws Exception */ public String sendMail(String user, String password, String host, String from, String to, String subject, String content) throws Exception { if (to != null){ Properties props = System.getProperties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); MailAuthenticator auth = new MailAuthenticator(); MailAuthenticator.USERNAME = user; MailAuthenticator.PASSWORD = password; Session session = Session.getInstance(props, auth); session.setDebug(true); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); if (!to.trim().equals("")) message.addRecipient(Message.RecipientType.TO, new InternetAddress(to.trim())); message.setSubject(subject); MimeBodyPart mbp1 = new MimeBodyPart(); // 正文 mbp1.setContent(content, "text/html;charset=utf-8"); Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件 mp.addBodyPart(mbp1); // mp.addBodyPart(mbp2); message.setContent(mp); message.setSentDate(new Date()); message.saveChanges(); Transport trans = session.getTransport("smtp"); trans.send(message); System.out.println(message.toString()); } catch (Exception e){ e.printStackTrace(); return "failure"; } return "success"; }else{ return "failure"; } } }
第三步:测试tomcat
public static void main(String[] args) { MailOperation operation = new MailOperation(); String user = "你的邮箱地址"; String password = "你的邮箱受权码"; String host = "smtp.163.com"; String from = "你的邮箱地址"; String to = "目标邮箱地址";// 收件人 String subject = "输入邮件主题"; //邮箱内容 StringBuffer sb = new StringBuffer(); String yzm = RandomUtil.getRandomString(6); sb.append("<!DOCTYPE>"+"<div bgcolor='#f1fcfa' style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px; padding-bottom:5px;'><span style='font-weight:bold;'>舒适提示:</span>" + "<div style='width:950px;font-family:arial;'>欢迎使用NET微活动,您的注册码为:<br/><h2 style='color:green'>"+yzm+"</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/>杭州恩意替电子商务有限公司</div>" +"</div>"); try { String res = operation.sendMail(user, password, host, from, to, subject, sb.toString()); System.out.println(res); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
注意:邮件发送很简单,不过有几个地方须要注意一下:session
一、发件人的密码不是你登陆邮箱的密码,而是设置POP3/SMTP/IMAP是获取的受权码,以下图(截取自163邮箱);app
二、若是使用QQ邮箱做为发件邮箱的话,须要专门配置SSL证书等等信息,这是由于QQ邮箱的要求(固然省事的作法就使用企业邮箱或者其余邮箱提供商好比163);dom
三、若是使用了其余邮箱服务商提供的邮箱来做为发件人,那么在编辑邮件内容的时候须要注意一些敏感词的问题,若是你的邮件中含有敏感内容的话邮箱服务商将不会为你发送该邮件;测试
四、若是是在main方法中调用的话是能够的,可是若是要部署到web容器(好比tomcat)中的话,则须要引入两个jar包与
网站