一.第一步:导入两个jar包。
activation.jar 和 mail.jar, 一定要添加到构建路径(不然找不到包)
两个用于Java发送邮件的jar包-Java文档类资源-CSDN下载
二、创建邮箱工具类:Mail.java
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class Mail {String to = "";// 收件邮箱String from = "";// 发件邮箱String host = "";// smtp主机 服务器地址 String username = ""; //登录服务器校验用户String password = ""; //登录服务器校验密码String filename = "";// 附件文件名String subject = "";// 邮件主题String content = "";// 邮件正文Vector file = new Vector();// 附件文件集合public Mail() {}//构造器,提供直接的参数传入public Mail(String to, String from, String smtpServer, String username, String password, String subject,String content) {this.to = to;this.from = from;this.host = smtpServer;this.username = username;this.password = password;this.subject = subject;this.content = content;}//设置邮件服务器地址public void setHost(String host) {this.host = host;}//设置登录服务器校验密码public void setPassWord(String pwd) {this.password = pwd;}//设置登录服务器校验用户public void setUserName(String usn) {this.username = usn;}//设置邮件发送目的邮箱public void setTo(String to) {this.to = to;}//设置邮件发送源邮箱public void setFrom(String from) {this.from = from;}//设置邮件主题public void setSubject(String subject) {this.subject = subject;}//设置邮件内容public void setContent(String content) {this.content = content;}//把主题转换为中文public String transferChinese(String strText) {try {strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312"), "GB2312", "B");} catch (Exception e) {e.printStackTrace();}return strText;}//往附件组合中添加附件public void attachfile(String fname) {file.addElement(fname);}//发送邮件public boolean sendMail() {// 构造mail sessionProperties props = System.getProperties();props.put("mail.smtp.host", host);props.put("mail.smtp.auth", "true");Session session = Session.getDefaultInstance(props, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}});try {// 构造MimeMessage 并设定基本的值MimeMessage msg = new MimeMessage(session);msg.setFrom(new InternetAddress(from));InternetAddress[] address = { new InternetAddress(to) };msg.setRecipients(Message.RecipientType.TO, address);subject = transferChinese(subject);msg.setSubject(subject);// 构造MultipartMultipart mp = new MimeMultipart();// 向Multipart添加正文MimeBodyPart mbpContent = new MimeBodyPart();mbpContent.setText(content);// 向MimeMessage添加(Multipart代表正文)mp.addBodyPart(mbpContent);// 向Multipart添加附件Enumeration efile = file.elements();while (efile.hasMoreElements()) {MimeBodyPart mbpFile = new MimeBodyPart();filename = efile.nextElement().toString();FileDataSource fds = new FileDataSource(filename);mbpFile.setDataHandler(new DataHandler(fds));mbpFile.setFileName(fds.getName());// 向MimeMessage添加(Multipart代表附件)mp.addBodyPart(mbpFile);}file.removeAllElements();// 向Multipart添加MimeMessagemsg.setContent(mp);msg.setSentDate(new Date());// 发送邮件Transport.send(msg);} catch (MessagingException mex) {mex.printStackTrace();Exception ex = null;if ((ex = mex.getNextException()) != null) {ex.printStackTrace();}return false;}return true;}}
三、实例化,配置邮箱并发送邮件
//测试发送邮件public class testMail {public static void main(String[] args){Mail sendmail = new Mail();sendmail.setHost("smtp.qq.com"); //服务器地址sendmail.setUserName("xxxxxxxxxx@qq.com"); //登录服务器校验用户sendmail.setPassWord("xxxxxxxxxxxxxxxxx"); //登录服务器校验密码sendmail.setTo("xxxxxxxxxxx@qq.com"); //收件人sendmail.setFrom("xxxxxxxxx@qq.com"); //发件人 sendmail.setSubject("新的账单"); //主题(标题)sendmail.setContent("这是六月份的账单"); //内容//Mail sendmail = new
Mail("aaaaaaaaa@163.com","aaaaaaaaa@163.com","smtp.163.com","aaaaaaaaa","aaaaaaaaa","你好","喂,你好吗?");//也可以一条语句设置//添加附件 sendmail.attachfile("D:\\1.png");//sendmail.attachfile("D:\\hhh.xls"); // 可以有多个附件,调用一次就就添加一个附件文件 //发送邮件boolean flag=sendmail.sendMail();if(flag==true) {System.out.println("发送成功!");}else {System.out.println("发送失败!");}}}
以QQ邮箱为例,服务器地址为smtp.qq.com ,不同的邮箱会有差异
这里的PassWord不是邮箱的密码,这个要登录邮箱去获取,我把它理解成 授权码/验证码,
有了这个程序就能用你的账号发送邮件,获取方法我放在下面