最近在做一个Java发送邮件的工具类,现在分享一下完整的代码
首先需要java邮件的包javax.mail-1.5.4.jar
之前因为链接给错了,很不好意思,现在重新发一次。
包在这里可以下载http://download.csdn.net/detail/sun2015_07_24/9392090
第一步:邮箱需要开通POP3/SMTP等服务
第二步:设置授权码,代码中所写的密码不是邮箱密码是授权码
1 package com.jspxcms.common.util; 2 import java.io.UnsupportedEncodingException; 3 import java.util.Date; 4 import java.util.Properties; 5 6 import javax.mail.Address; 7 import javax.mail.Message; 8 import javax.mail.Session; 9 import javax.mail.Transport; 10 import javax.mail.internet.InternetAddress; 11 import javax.mail.internet.MimeMessage; 12 13 /** 14 * 邮件发送工具类 15 */ 16 public class SendMailUtil { 17 18 /** 19 * 邮件发送的方法 20 * 21 * @param to 收件人 22 * @param subject 主题 23 * @param content 内容 24 * @param smtp 协议 25 * @param host 发送服务器服务器 26 * @param sendName 邮件发送人 27 * @param sendPort 邮件发送人端口 28 * @param userName 邮件发送人名 29 * @param userPwd 邮件发送人密码 自己测试时用的是授权码不是密码 30 * @return 成功或失败 31 */ 32 public static boolean send(String to, String subject, String content, String smtp, String host, 33 String sendName, String sendPort, String userName, String userPwd) { 34 35 // 第一步:创建Session 36 Properties props = new Properties(); 37 // 指定邮件的传输协议,smtp(Simple Mail Transfer Protocol 简单的邮件传输协议) 38 props.put("mail.transport.protocol", smtp); 39 // 指定邮件发送服务器服务器 "smtp.qq.com" 40 props.put("mail.host", host); 41 // 指定邮件的发送人(您用来发送邮件的服务器,比如您的163sina等邮箱) 42 props.put("mail.from", sendName); 43 if (true) { 44 props.put("mail.smtp.starttls.enable", "true"); 45 props.put("mail.smtp.socketFactory.fallback", "false"); 46 props.put("mail.smtp.socketFactory.port", sendPort); 47 } 48 Session session = Session.getDefaultInstance(props); 49 50 // 开启调试模式 51 session.setDebug(true); 52 try { 53 // 第二步:获取邮件发送对象 54 Transport transport = session.getTransport(); 55 // 连接邮件服务器,链接您的163、sina邮箱,用户名(不带@163.com,登录邮箱的邮箱账号,不是邮箱地址)、密码 56 transport.connect(userName, userPwd); 57 Address toAddress = new InternetAddress(to); 58 59 // 第三步:创建邮件消息体 60 MimeMessage message = new MimeMessage(session); 61 //设置自定义发件人昵称 62 String nick=""; 63 try { 64 nick=javax.mail.internet.MimeUtility.encodeText("我的昵称"); 65 } catch (UnsupportedEncodingException e) { 66 e.printStackTrace(); 67 } 68 message.setFrom(new InternetAddress(nick+" <"+sendName+">")); 69 //设置发信人 70 // message.setFrom(new InternetAddress(sendName)); 71 72 // 邮件的主题 73 message.setSubject(subject); 74 //收件人 75 message.addRecipient(Message.RecipientType.TO, toAddress); 76 /*//抄送人 77 Address ccAddress = new InternetAddress("first.lady@whitehouse.gov"); 78 message.addRecipient(Message.RecipientType.CC, ccAddress);*/ 79 // 邮件的内容 80 message.setContent(content, "text/html;charset=utf-8"); 81 // 邮件发送时间 82 message.setSentDate(new Date()); 83 84 // 第四步:发送邮件 85 // 第一个参数:邮件的消息体 86 // 第二个参数:邮件的接收人,多个接收人用逗号隔开(test1@163.com,test2@sina.com) 87 transport.sendMessage(message, InternetAddress.parse(to)); 88 return true; 89 } catch (Exception e) { 90 e.printStackTrace(); 91 } 92 return false; 93 } 94 95 public static void main(String[] args) { 96 // 您要发送给谁,标题,内容 97 //SendMailUtil.send("*****@qq.com", "标题", "内容", "smtp", "smtp.qq.com", "发送人邮箱", "端口号", "邮箱用户名", "邮箱密码"); 98 SendMailUtil.send("*********@qq.com", "标题", "内容", "smtp", "smtp.163.com", 99 "181467089**@163.com", "", "181467089**", "**123456"); 100 } 101 102 }