引入javamail.jar包,如果struts2框架已经加入,则要将java EE 5 library包降低为1.4的,不然可能会有冲突。
main函数:
DesUtil desUtil = new DesUtil();
String passwd = desUtil.getEncPass(passWord);//加密
String url = "http://localhost:8080/online/jsp/emailCheck.action?active=" + passwd + "®Email=" + regEmail;//加后缀是为了邮箱激活使用
MessageSender messageSender = new MessageSender();
// 指定使用SMTP协议来创建Session对象
Session session = messageSender.createSession("smtp");
// 使用前面文章所完成的邮件创建类获得 Message 对象
MimeMessage mail;
try {
mail = new WithAttachmentMessage().createMessage(session, "924837275@qq.com" ,"924837275@qq.com", url);
messageSender.sendMail(session, mail, "smtp.qq.com", "924837275@qq.com", "cwytm88121825");
} catch (Exception e) {
e.printStackTrace();
}
以上用到两个类:
1、MessageSender
public Session createSession(String protocol) {
Properties property = new Properties();
property.setProperty("mail.transport.protocol", protocol);
property.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(property);
// 启动JavaMail调试功能,可以返回与SMTP服务器交互的命令信息
// 可以从控制台中看一下服务器的响应信息
session.setDebug(true);
return session;
}
/**
* 传入Session、MimeMessage对象,创建 Transport 对象发送邮件
*/
public void sendMail(Session session, MimeMessage msg, String smtpServer, String user, String pwd) throws Exception {
// 设置发件人使用的SMTP服务器、用户名、密码
// 由 Session 对象获得 Transport 对象
Transport transport = session.getTransport();
// 发送用户名、密码连接到指定的 smtp 服务器
transport.connect(smtpServer, user, pwd);
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
transport.close();
}
2、WithAttachmentMessage
/**
* 根据传入的文件路径创建附件并返回
*/
public MimeBodyPart createAttachment(String fileName) throws Exception {
MimeBodyPart attachmentPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(fileName);
attachmentPart.setDataHandler(new DataHandler(fds));
attachmentPart.setFileName(fds.getName());
return attachmentPart;
}
/**
* 根据传入的邮件正文body和文件路径创建图文并茂的正文部分
*/
public MimeBodyPart createContent(String body, String fileName)
throws Exception {
// 用于保存最终正文部分
MimeBodyPart contentBody = new MimeBodyPart();
// 用于组合文本和图片,"related"型的MimeMultipart对象
MimeMultipart contentMulti = new MimeMultipart("related");
// 正文的文本部分
MimeBodyPart textBody = new MimeBodyPart();
textBody.setContent(body, "text/html;charset=gbk");
contentMulti.addBodyPart(textBody);
// 正文的图片部分
MimeBodyPart jpgBody = new MimeBodyPart();
FileDataSource fds = new FileDataSource(fileName);
jpgBody.setDataHandler(new DataHandler(fds));
jpgBody.setContentID("logo_jpg");
contentMulti.addBodyPart(jpgBody);
// 将上面"related"型的 MimeMultipart 对象作为邮件的正文
contentBody.setContent(contentMulti);
return contentBody;
}
/**
* 根据传入的 Seesion 对象创建混合型的 MIME消息
*/
public MimeMessage createMessage(Session session, String from, String to, String url) throws Exception {
String subject = "欢迎注册铛铛在线项目管理平台";
String body = "<h4>点击超链接</h4><br>"
+ "<a href = " + url + ">" + url + "</a><br>"
+ "<h4>完成注册</h4>";
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
// 创建邮件的各个 MimeBodyPart 部分
MimeBodyPart attachment01 = createAttachment("d:\\ww.docx");
MimeBodyPart attachment02 = createAttachment("d:\\www.docx");
MimeBodyPart content = createContent(body, "d:\\ww.docx");
// 将邮件中各个部分组合到一个"mixed"型的 MimeMultipart 对象
MimeMultipart allPart = new MimeMultipart("mixed");
allPart.addBodyPart(attachment01);
allPart.addBodyPart(attachment02);
allPart.addBodyPart(content);
// 将上面混合型的 MimeMultipart 对象作为邮件内容并保存
msg.setContent(allPart);
msg.saveChanges();
return msg;
}
邮件内容包含很全面,但是你也可以选择自己所需的。
当你激活邮箱里的超链接的时候,回传的参数,从而控制邮箱填入是否正确是否有激活,只有激活后,才承认注册成功,能过登录