配置文件:
mail.smtp.host=smtp.163.com #发件箱的服务器
mail.smtp.auth=true
mail.sender.username=xxxxxx@163.com #邮箱地址
mail.sender.password=xxxxxx #邮箱授权码(开启stmp和pop服务后获取授权码)
mail.smtp.port=465 #使用ssl加密端口(25端口不加密,可能服务器使用不了,一下为使用ssl加密的配置)
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.fallback=false
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
//读取配置文件
Properties props = new Properties();
InputStream in = this.getClass().getClassLoader().getResourceAsStream("sendEmail.properties");
props.load(in);
String mailHost = props.getProperty("mail.smtp.host");
String sender_uname = props.getProperty("mail.sender.username");
String sender_upwd = props.getProperty("mail.sender.password");
Transport transport;
// 1.创建一个程序与邮件服务器会话对象 Session
Session session = Session.getInstance(props);
//解决文件名称过长出现乱码问题
System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
// 2.创建一个Message,它相当于是邮件内容
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender_uname));// 设置发送者
message.setSubject("今日入职新人名单");// 设置主题
// 设置发送方式与接收者
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(entEmails.get(entName)));
// 3.创建multipart对象,并添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 添加邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent("老师您好,现将我公司今日入职新人名单以附件形式发送给您,劳烦您对此部分人员进行信息维护,谢谢", "text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);
// 添加附件
BodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(new File("D:\GitWorkSpace\file.text"));
attachmentBodyPart.setDataHandler(new DataHandler(source));
// 和System.getProperties().setProperty("mail.mime.splitlongparameters", "false")一起使用解决文件名过长造成的乱码问题
attachmentBodyPart.setFileName(MimeUtility.encodeText(file.getName()));
multipart.addBodyPart(attachmentBodyPart);
message.setContent(multipart); // 将multipart对象放到message中
message.saveChanges();// 保存邮件
transport = session.getTransport("smtp");
transport.connect(mailHost, sender_uname, sender_upwd);// smtp验证,就是你用来发邮件的邮箱用户名密码
transport.sendMessage(message, message.getAllRecipients());// 发送
logger.info(entName+"——邮件信息已发送完毕");
file.delete();//文件发送后删除,如果不需要刻意去掉
transport.close();
in.close();