1.1. 添加依赖
<dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
如果不是maven项目,则直接导入javax.mail.jar和activation.jar两个jar文件即可。
1.2. 示例代码
package com.wanmait.mavendemo.util; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.*; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Properties; public class MailUtil0 { //subject主题 content内容,to 邮件的接收方 public static void sendMail(String to,String subject,String content) { // 发件人的 邮箱 和 密码 // 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(称为“授权码”), //对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。 String account = "你的邮箱1025205118@qq.com"; String password = "这里是你的授权码"; // 发件人邮箱的 SMTP 服务器地址, 不同邮件服务器地址不同 // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com String emailSMTPHost = "smtp.qq.com"; // 1.创建连接对象,链接到邮箱服务器 Properties props = new Properties();// 参数配置 props.setProperty("mail.transport.protocol", "smtp");// 使用的协议(JavaMail规范要求) props.setProperty("mail.smtp.host", emailSMTPHost);// 发件人的邮箱的 SMTP // 服务器地址 props.setProperty("mail.smtp.auth", "true");// 需要请求认证 // 2.根据配置创建会话对象, 用于和邮件服务器交互 Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(account, password); } }); try { // 3.创建邮件对象 Message message = new MimeMessage(session); // 3.1设置发件人 message.setFrom(new InternetAddress(account)); // 3.2设置收件人 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to)); //设置抄送 //message.setRecipients(MimeMessage.RecipientType.CC,new Address[]{new InternetAddress("itworker2006@126.com")}); message.setRecipient(MimeMessage.RecipientType.CC,new InternetAddress("qingsoft@126.com")); //设置密送 //message.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress("6476003@qq.com")); // 3.3设置邮件的主题 message.setSubject(subject); // 3.4设置邮件的正文 //不带附件直接设置内容 message.setContent(content, "text/html;charset=UTF-8"); // 4.发送邮件 Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); } } //subject主题 content内容,to 邮件的接收方,attachements附件 public static void sendMail(String to,String subject,String content,List<File> attachments) { // 发件人的 邮箱 和 密码 // 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(称为“授权码”), //对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。 String account = "自己的qq邮箱"; String password = "申请的授权码"; // 发件人邮箱的 SMTP 服务器地址, 不同邮件服务器地址不同 // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com String emailSMTPHost = "smtp.qq.com"; // 1.创建连接对象,链接到邮箱服务器 Properties props = new Properties();// 参数配置 props.setProperty("mail.transport.protocol", "smtp");// 使用的协议(JavaMail规范要求) props.setProperty("mail.smtp.host", emailSMTPHost);// 发件人的邮箱的 SMTP // 服务器地址 props.setProperty("mail.smtp.auth", "true");// 需要请求认证 // 2.根据配置创建会话对象, 用于和邮件服务器交互 Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(account, password); } }); try { // 3.创建邮件对象 Message message = new MimeMessage(session); // 3.1设置发件人 message.setFrom(new InternetAddress(account)); // 3.2设置收件人 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to)); //设置抄送 //message.setRecipients(MimeMessage.RecipientType.CC,new Address[]{new InternetAddress("qingsoft@126.com")}); message.setRecipient(MimeMessage.RecipientType.CC,new InternetAddress("62999860@qq.com")); //设置密送 //message.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress("6476003@qq.com")); // 3.3设置邮件的主题 message.setSubject(subject); // 3.4设置邮件的正文 //不带附件直接设置内容 // message.setContent(content, "text/html;charset=UTF-8"); //添加附件,需要特殊处理 listFile(content,attachments,message); // 4.发送邮件 Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void listFile(String content, List<File> attachments, Message message) throws MessagingException, IOException { Multipart multipart = new MimeMultipart(); //邮件正文 BodyPart contentPart = new MimeBodyPart(); contentPart.setContent(content, "text/html;charset=utf-8"); multipart.addBodyPart(contentPart); //邮件附件 if (attachments != null) { for (File attachment : attachments) { BodyPart attachmentPart = new MimeBodyPart(); DataSource source = new FileDataSource(attachment); attachmentPart.setDataHandler(new DataHandler(source)); //避免中文乱码的处理 attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName())); multipart.addBodyPart(attachmentPart); } } message.setContent(multipart); //保存邮件 message.saveChanges(); } public static void main(String[] args) { MailUtil0 mailUtil = new MailUtil0(); String subject="来自万码学堂的邮件"; String code="23df"; String content ="<h1>来自万码云课的激活邮件,您的验证码是:</h1><h3><a href='http://www.wanmait.com/JavaMail/active?code=" + code + "'>http://www.wanmait.com/JavaMail/active?code=" +code + "</h3>"; //mailUtil.sendMail("wangrf@qingsoft.net", subject,content); mailUtil.sendMail("sunm@qingsoft.net", subject,content,Arrays.asList(new File("d:\\log.txt"))); } }
0条评论
点击登录参与评论