|
@@ -45,4 +45,105 @@ void delete();
|
|
|
|
|
|
## 4、ServletFileUpload 类
|
|
|
|
|
|
-ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中 . 使用其parseRequest(HttpServletRequest) 方法可以将通过表单中每一个HTML标签提交的数据封装成一个FileItem对象,然后以List列表的形式返回,使用该方法处理上传文件简单易用
|
|
|
+ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中 . 使用其parseRequest(HttpServletRequest) 方法可以将通过表单中每一个HTML标签提交的数据封装成一个FileItem对象,然后以List列表的形式返回,使用该方法处理上传文件简单易用
|
|
|
+
|
|
|
+# 邮件发送
|
|
|
+
|
|
|
+***
|
|
|
+
|
|
|
+## 1、 发送原理
|
|
|
+
|
|
|
+
|
|
|
+1. 张三通过smtp协议连接到Smtp服务器,然后发送一封邮件给网易的邮件服务器
|
|
|
+2. 网易分析发现需要去QQ的邮件服务器,通过Smtp协议将邮件转投给QQ的Smtp服务器
|
|
|
+3. QQ将接收到的邮件存储在456789@qq.com这个邮件账号的空间中
|
|
|
+4. 李四通过Pop3协议连接到Pop3服务器收取邮件
|
|
|
+5. 从456789@qq.com这个邮件账号的空间中取出邮件
|
|
|
+6. Pop3服务器将取出来的邮件送道李四手中
|
|
|
+
|
|
|
+## 2、 复杂文件内容的发送
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+```java
|
|
|
+import com.sun.mail.util.MailSSLSocketFactory;
|
|
|
+
|
|
|
+import javax.activation.DataHandler;
|
|
|
+import javax.activation.FileDataSource;
|
|
|
+import javax.mail.*;
|
|
|
+import javax.mail.internet.InternetAddress;
|
|
|
+import javax.mail.internet.MimeBodyPart;
|
|
|
+import javax.mail.internet.MimeMessage;
|
|
|
+import javax.mail.internet.MimeMultipart;
|
|
|
+import java.util.Properties;
|
|
|
+
|
|
|
+public class MailDemo02 {
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ Properties prop=new Properties();
|
|
|
+ prop.setProperty("mail.host","smtp.qq.com");// 设置QQ邮件服务器
|
|
|
+ prop.setProperty("mail.transport.protocol","smtp");// 邮件发送协议
|
|
|
+ prop.setProperty("mail.smtp.auth","true");// 需要验证用户密码
|
|
|
+ // QQ邮箱需要设置SSL加密
|
|
|
+ MailSSLSocketFactory sf=new MailSSLSocketFactory();
|
|
|
+ sf.setTrustAllHosts(true);
|
|
|
+ prop.put("mail.smtp.ssl.enable","true");
|
|
|
+ prop.put("mail.smtp.ssl.socketFactory",sf);
|
|
|
+
|
|
|
+ // 使用javaMail发送邮件的5个步骤
|
|
|
+ // 1.创建定义整个应用程序所需要的环境信息的session对象
|
|
|
+ Session session=Session.getDefaultInstance(prop, new Authenticator() {
|
|
|
+ @Override
|
|
|
+ protected PasswordAuthentication getPasswordAuthentication() {
|
|
|
+ return new PasswordAuthentication("11927XXX@qq.com","授权码");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 开启session的debug模式,这样可以查看到程序发送Email的运行状态
|
|
|
+ session.setDebug(true);
|
|
|
+ // 2.通过session得到transport对象
|
|
|
+ Transport ts=session.getTransport();
|
|
|
+ // 3.使用邮箱的用户名和授权码连上邮件服务器
|
|
|
+ ts.connect("smtp.qq.com","11927XXX@qq.com","授权码");
|
|
|
+ // 4.创建邮件:写文件
|
|
|
+ // 注意需要传递session
|
|
|
+ MimeMessage message=new MimeMessage(session);
|
|
|
+ // 指明邮件的发件人
|
|
|
+ message.setFrom(new InternetAddress("11927XXX@qq.com"));
|
|
|
+ // 指明邮件的收件人
|
|
|
+ message.setRecipient(Message.RecipientType.TO,new InternetAddress("11927XXX@qq.com"));
|
|
|
+ // 邮件标题
|
|
|
+ message.setSubject("java发出");
|
|
|
+
|
|
|
+ // 邮件的文本内容
|
|
|
+ // =================================准备图片数据=======================================
|
|
|
+ MimeBodyPart image=new MimeBodyPart();
|
|
|
+ // 图片需要经过数据化的处理
|
|
|
+ DataHandler dh=new DataHandler(new FileDataSource("src/resources/1.jpg"));
|
|
|
+ // 在part中放入这个处理过图片的数据
|
|
|
+ image.setDataHandler(dh);
|
|
|
+ // 给这个part设置一个ID名字,sr
|
|
|
+ image.setContentID("1.jpg");
|
|
|
+
|
|
|
+ // 准备正文的数据
|
|
|
+ MimeBodyPart text=new MimeBodyPart();
|
|
|
+ text.setContent("这是一张正文<img src='cid:1.jpg'>","text/html;charset=UTF-8");
|
|
|
+
|
|
|
+ // 描述数据关系
|
|
|
+ MimeMultipart mm=new MimeMultipart();
|
|
|
+ mm.addBodyPart(text);
|
|
|
+ mm.addBodyPart(image);
|
|
|
+ mm.setSubType("related");
|
|
|
+
|
|
|
+ // 设置到消息中,保存修改
|
|
|
+ message.setContent(mm);
|
|
|
+ message.saveChanges();
|
|
|
+ // 5.发送邮件
|
|
|
+ ts.sendMessage(message,message.getAllRecipients());
|
|
|
+
|
|
|
+ // 6.关闭连接
|
|
|
+ ts.close();
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+```
|
|
|
+
|