下面代码可以实现普通qq邮箱发送邮件的功能,可以传附件,但是是固定的附件:
需要两个jar包:mail.jar,activation.jar
mail.jar 下载地址:
http://java.sun.com/products/javamail/downloads/index.html
activation.jar 下载地址:
http://java.sun.com/products/javabeans/jaf/downloads/index.html
必须要在qq邮箱中获得第三方登录授权码:
代码:
/**
* 发送邮件(可以携带附件)
* @param to 收件人
*/
public void sendMessage(String to)
{
// 发件人电子邮箱
String from = "XXXXXXXXX@qq.com";
// 发件人电子邮箱密码(此为QQ邮箱第三方客户端登录授权码)
String password = "**********";
// 指定发送邮件的主机为
String host = "smtp.qq.com";
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.port", "465");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.auth", true);
// 获取默认session对象
Session session = Session.getDefaultInstance(properties,new Authenticator(){
public PasswordAuthentication getPasswordAuthentication()
{
//发件人邮件用户名、密码
return new PasswordAuthentication("XXXXXXXXX@qq.com", "**********");
}
});
//设置获取debug信息
session.setDebug(true);
try{
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段(发件人)
message.setFrom(new InternetAddress(from));
// Set To: 头部头字段(收件人)
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
// Set Subject: 头部头字段(邮件主题)
message.setSubject("测试邮件!");
// 设置消息体
message.setText("这是一个测试邮件");
//读取附件
try {
// 设置一个超文本对象
Multipart multipart = new MimeMultipart();
// 设置一个超文本的内容对象
BodyPart bodyPart;
// 创建一个文件读取对象,从文件路径将文件读取出来
File file = new File("D:/****.docx");
// 判断文件不存在则抛出异常
if(!file.exists()){
throw new IOException("文件不存在!请确定文件路径是否正确");
}
bodyPart = new MimeBodyPart();
// 创建一个文件数据对象来管理文件数据
DataSource dataSource = new FileDataSource(file);
// 将文件数据设置成统一的数据然后设置为bodyPart的数据
bodyPart.setDataHandler(new DataHandler(dataSource));
//文件名要加入编码,不然出现乱码
bodyPart.setFileName(MimeUtility.encodeText(file.getName()));
// 将bodyPart设置为附件的内容
multipart.addBodyPart(bodyPart);
//将附件加入邮件中
message.setContent(multipart);
} catch (Exception e) {
e.printStackTrace();
}
// 获得transport示例对象
Transport transport = session.getTransport("smtp");
// 打开连接
transport.connect(host, from, password);
// 将message对象传递给transport对象,将邮件发送出去
transport.sendMessage(message, message.getAllRecipients());
// 关闭传输对象
transport.close();
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
点击下载所需jar包