本文为joshua317原创文章,转载请注明:转载自joshua317博客 JavaMail 网易邮件发送demo-发送带附件的邮件 - joshua317的博客
使用Java应用程序发送 E-mail,需要在机子上安装 JavaMail API 和Java Activation Framework (JAF) 。
也可以使用本站提供的下载链接,右键复制下载链接地址,进行下载:
首先打开File | project Structure| Modules,或者使用快捷键Ctrl+Alt+Shift+S快捷键直接唤出project Structure面板

然后添加这两个jar包

package com.joshua317;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;public class SendEmail {public static void main(String[] args) {// 收件人电子邮箱,TODO 换成自己的收件箱String to = "xxxx@qq.com";// 发件人电子邮箱,TODO 换成自己的发件箱String from = "xxx@163.com";// 指定发送邮件的主机为String host = "smtp.163.com";// 获取系统属性//Properties properties = System.getProperties();Properties properties = new Properties();// 设置邮件服务器properties.setProperty("mail.smtp.host", host);// 邮件发送协议properties.setProperty("mail.transport.protocol", "smtp");//是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)properties.setProperty("mail.debug","true");properties.setProperty("mail.smtp.auth", "true");// 获取默认session对象Session session = Session.getDefaultInstance(properties,new Authenticator(){@Overridepublic PasswordAuthentication getPasswordAuthentication(){//发件人邮件用户名、授权码,换成自己的发件箱及授权码return new PasswordAuthentication("xxx@163.com", "xxxxx");}});try{// 创建默认的 MimeMessage 对象MimeMessage message = new MimeMessage(session);// Set From,设置发件人InternetAddress fromMail = new InternetAddress(from);//设置发件人名称,TODO 换成自己的发件箱fromMail.setPersonal(MimeUtility.encodeText("joshua317"));message.setFrom(fromMail);// Set To: 设置收件人InternetAddress toMail = new InternetAddress(to);// TODO 换成自己的收件箱InternetAddress toMail2 = new InternetAddress("xxx@163.com");//发一个邮箱
// message.setRecipient(Message.RecipientType.TO, toMail);//发多个邮箱Address[] allRecipients = {toMail, toMail2};message.setRecipients(Message.RecipientType.TO, allRecipients);// Set Subject: 邮件主体message.setSubject("发送一封测试邮件!网易邮箱!");// 设置消息体message.setSentDate(new Date());// 指定为混合关系MimeMultipart msgMultipart = new MimeMultipart("mixed");message.setContent(msgMultipart);// 邮件信息组装//组装的顺序非常重要,一定要先组装文本域,再组装文件MimeBodyPart htmlPart = new MimeBodyPart();// 组装内容htmlPart.setContent("This is message content", "text/html;charset=UTF-8");msgMultipart.addBodyPart(htmlPart);// 组装附件MimeBodyPart filePart = new MimeBodyPart();//TODO 换成自己的附件地址FileDataSource file_datasource = new FileDataSource("F:\\resource\\xxx.zip");DataHandler dh = new DataHandler(file_datasource);filePart.setDataHandler(dh);// 附件区别内嵌内容的一个特点是有文件名,为防止中文乱码要编码filePart.setFileName(MimeUtility.encodeText(dh.getName()));msgMultipart.addBodyPart(filePart);message.saveChanges();//发送//Transport.send(message, message.getAllRecipients());Transport.send(message);System.out.println("Sent mail successfully....");}catch (MessagingException | UnsupportedEncodingException mex) {mex.printStackTrace();}}
}


4.1 关于163邮箱IMAP/SMTP的开启
1)使用电脑,打开浏览器
2)电脑登录 mail.163.com,点击设置>POP3/SMTP/IMAP
3)客户端授权密码,点击"开启"

4)在弹出窗口中,完成手机短信验证

5)手机短信验证通过后,请设置客户端授权密码并确认

6)点击确定,确认自动开启SMTP/POP3/IMAP服务,完成客户端授权码设置
注意:
关于授权密码:
授权码是用于登录第三方邮件客户端的专用密码。
适用于登录以下服务: 您开启的服务(例如POP3/IMAP/SMTP)、Exchange/CardDAV/CalDAV服务。
本文为joshua317原创文章,转载请注明:转载自joshua317博客 JavaMail 网易邮件发送demo-发送带附件的邮件 - joshua317的博客