需要的jar:activation(激活).jar和mail.jar
0.设置发件邮箱的授权(以126为例)
点击POP3/SMTP服务后就有弹窗
之后得到一个自己设置的 授权码
1.准备配置文件properties
※注意:mail.host / mail.transport.protocol / mail.smtp.auth 不能修改其名字 位置可以更改
剩下的几项名字可以更改,仅作导入字符串作用
※注意:pwd(password)代表的是发件人邮箱的授权码 不是登录发件人邮箱时用的密码
※注意:uname是发件人邮箱的id 不用@后面的字符串
2.写Java程序
2.1.加载配置文件得到props对象
//email_template.properties是第一步在项目中创建的配置文件的名字
Properties props = new Properties();
props.load(this.getClass().getClassLoader()
.getResourceAsStream("email_template.properties"));
2.2.创建props对应Session对象
Session session = Session.getDefaultInstance(props);
session.setDebug(true); //设置调试模式
2.3.创建session对应MineMessage对象(用来设置发件人/收件人/主题)
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(props.getProperty("from")));
message.setRecipient(Message.RecipientType.TO, (new InternetAddress(form.getEmail())));
message.setSubject(props.getProperty("subject"));
2.3.1设置message内容(文字+附件)
Multipart multipart = new MimeMultipart(); //创建内容块
BodyPart contentPart = new MimeBodyPart(); //内容文字块
contentPart.setContent("文字块内容","text/html;charset=utf-8");
BodyPart attachmentPart = new MimeBodyPart(); //内容附件块
File file = new File("附件路径");
DataSource dataSource = new FileDataSource(file);
attachmentPart.setDataHandler(new DataHandler(dataSource));
//防止乱码或不显示中文
attachmentPart.setFileName(MimeUtility.encodeWord(file.getName()));
multipart.addBodyPart(contentPart);
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);
2.4.创建session对应Transport对象
//uname对应发件邮箱名 不用@后面字符串
Transport ts = session.getTransport();
ts.connect(props.getProperty("uname"), props.getProperty("pwd"));
※这里调用Transport的connect方法时会有异常要处理
2.5.用transport发送
ts.sendMessage(message, message.getAllRecipients());