JavaMail学习笔记-3 (包括Oreilly欧莱理上传组件的使用)

发送带附件的邮件:

1.前端输入页面加入file

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
    
< head >
        
< title > JavaMail3.html </ title >
    
</ head >

    
< body >

        
< form  action ="SEND3"  method ="post"  enctype ="multipart/form-data" >
            From:
< input  type ="text"  name ="from" >< br >
            TO:
< input  type ="text"  name ="to" >< br >
            Subject:
< input  type ="text"  name ="subject" >< br >
            type:
< select  name =type  size ="1" >
                    
< option  value ="text/plain" > Text </ option >
                    
< option  value ="text/html" > Html </ option >
                 
</ select >< br >
            file:
< input  type ="file"  name ="filename" >< br >
            Context:
< textarea  rows ="4"  cols ="40"  name ="context" ></ textarea >< br >
            
< input  type ="submit"  value ="send" >
        
</ form >
    
</ body >
</ html >

2.编写servlet : SEND3.java

 

package  com.servlet;

import  java.io.File;
import  java.io.IOException;
import  java.io.PrintWriter;
import  java.util.Date;
import  java.util.Properties;
import  javax.activation.DataHandler;
import  javax.activation.FileDataSource;
import  javax.mail.Message;
import  javax.mail.Multipart;
import  javax.mail.Session;
import  javax.mail.Transport;
import  javax.mail.internet.InternetAddress;
import  javax.mail.internet.MimeBodyPart;
import  javax.mail.internet.MimeMessage;
import  javax.mail.internet.MimeMultipart;
import  javax.mail.internet.MimeUtility;
import  javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

import  com.oreilly.servlet.MultipartRequest;

public   class  SEND3  extends  HttpServlet  {
    
    
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType(
"text/html;charset=GB18080");
        PrintWriter out 
= response.getWriter();
        request.setCharacterEncoding(
"GB18030");
        
        
//重新封装请求对象--oreilly
        MultipartRequest req = new MultipartRequest(request,".",5*1024*1024,"GB18030");
        
        String from 
= req.getParameter("from");
        String to 
= req.getParameter("to");
        String subject 
= req.getParameter("subject");
        String context 
= req.getParameter("context");
        String type
=req.getParameter("type");
        
        
//获取文件名
        String filename=req.getFilesystemName("filename");
        
        
// 确定要发送的邮件服务器的地址
        String mailserver = "codedestiny-pc";
        
        
try {
            
// 设置邮件的传输协议
            Properties prop = System.getProperties();
            prop.put(
"mail.smtp.host", mailserver);
            
            
// 建立邮件发送的连接
            Session session = Session.getDefaultInstance(prop, null);
        
            
// 创建发送的信息的载体
            Message msg = new MimeMessage(session);
            
            
// 设置相关的邮件属性
            msg.setFrom(new InternetAddress(from));
            
            
// 点到点的发送
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            msg.setSubject(subject);
            msg.setSentDate(
new Date());
            
            
//处理文件的上传
            if(filename != null){
                
//File file=new File(filename);//存留备份
                MimeBodyPart mbp1 = new MimeBodyPart();
                mbp1.setContent(context, type
+";charset=GB18030");//对于邮件的普通信息的处理
                
                
//附件的处理
                MimeBodyPart mbp2 = new MimeBodyPart();
                FileDataSource fds 
= new FileDataSource(filename);
                mbp2.setDataHandler(
new DataHandler(fds));
                mbp2.setFileName(MimeUtility.encodeText(fds.getName(),
"GB18030","B"));
                
/*
                 * file-----inputStream--|--FileDataSource---DataHandler(fds)接口的封装---mbp2
                 * 
*/

                Multipart mp 
= new MimeMultipart();
                mp.addBodyPart(mbp1);
                mp.addBodyPart(mbp2);
                msg.setContent(mp);
            }

            
else{
                msg.setContent(context, type
+";charset=GB18080");
                
//信封的书写格式
            }

                        
            
// 发送
            Transport.send(msg);
            
        }
 catch (Exception e) {
            e.printStackTrace();
        }


        out.print(
"send ok"+"<br>");
        out.print(
"<a href='http://localhost/mail/index.asp'>查看信件</a>");
        out.flush();
        out.close();
    }


}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值