JavaMail应用实例说明:带附件的邮件发送 cos上传使用

多附件邮件的发送实例,附件上传这部分我用的是cos。关于javaMail基础配置请参考我的上一篇文章

<form action="SendEnclosure" method="post" enctype="multipart/form-data">
  		<table border="0" align="center" width="80%">
  			<tr>
  				<td align="right">From:</td>
  				<td>
  					<input type="text" name="from">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">To:</td>
  				<td>
  					<input type="text" name="to">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">Subject:</td>
  				<td>
  					<input type="text" name="subject">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">Context:</td>
  				<td>
  					<textarea rows="5" cols="30" name="context"></textarea>
  				</td>
  			</tr>
  			<tr>
  				<td align="right">附件:</td>
  				<td>
  					<input type="file" name="fileName">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">附件:</td>
  				<td>
  					<input type="file" name="fileName2">
  				</td>
  			</tr>
  			<tr>
  				<td align="center" colspan="2">
  					<input type="submit" value="发送">
  				</td>
  			</tr>
  		</table>
  	</form>

 servlet如下:

public class SendEnclosure extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3264368537634726072L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("GBK");
		/**
		 * from的enctype设置为"multipart/form-data"在servlet中request.getParameter("")无法获得
		 * 使用oreilly的MultipartRequest封装可以获取
		 */
		int enclosureSize = 5 * 1024 * 1024;
		// 把文件名带有.的作为附件信息
		MultipartRequest req = new MultipartRequest(request, ".", enclosureSize, "GBK");
		String from = req.getParameter("from");
		String to = req.getParameter("to");
		String subject = req.getParameter("subject");
		String context = req.getParameter("context");
		// 获得文件名
		/**
		String fileName = req.getFilesystemName("fileName");
		**/
		
		List<String> fileNames = new ArrayList<String>();
		// 多附件上传例子:获得所有的文件名,返回的是Enumeration
        Enumeration enumFiles = req.getFileNames();
        String fname = "";
		while(enumFiles.hasMoreElements()){
			fname = (String) enumFiles.nextElement();
			File f = req.getFile(fname);
			System.out.println(f.getName());
			fileNames.add(f.getName());
		}
        
		// 邮件服务器的地址
		String mailServer = "PC200904071715";
		// 设置邮件的传输协议信息
		Properties transProp = System.getProperties();
		// 邮件服务器地址
		transProp.put("mail.smtp.host", mailServer);
		// 邮件传输协议中的接收协议:smtp
		transProp.put("mail.transport.protocol", "smtp");
		// 是否通过验证
		transProp.put("mail.smtp.auth", "true");
		// 服务器端口
		transProp.put("mail.smtp.port", "25");// 默认端口25
		javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(transProp,new Authenticator(){
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("admin","");
			}
		});
		javax.mail.Message mailMessage = new javax.mail.internet.MimeMessage(mailSession);
		try {
			mailMessage.setFrom(new InternetAddress(from));
			mailMessage.setRecipient(RecipientType.TO, new InternetAddress(to));
			mailMessage.setSubject(subject);
			mailMessage.setSentDate(new Date());
			
			Multipart mp = new MimeMultipart();
			// 文本信息部分
			MimeBodyPart mbp1 = new MimeBodyPart();
			mbp1.setContent(context, "text/plain;charset=GBK");
			mp.addBodyPart(mbp1);
			/**
			if (fileName != null) {
				// 附件部分
				MimeBodyPart mbp2 = new MimeBodyPart();
				FileDataSource fds = new FileDataSource(fileName);
				mbp2.setDataHandler(new DataHandler(fds));
				mbp2.setFileName(MimeUtility.encodeText(fds.getName(), "GBK", "B"));
				mp.addBodyPart(mbp2);
			}
			**/
			MimeBodyPart mbp3 = null;
			if (fileNames != null && fileNames.size() > 0) {
				for (int i = 0; i < fileNames.size(); i++) {
					mbp3 = new MimeBodyPart();
					FileDataSource fds = new FileDataSource(fileNames.get(i));
					mbp3.setDataHandler(new DataHandler(fds));
					mbp3.setFileName(MimeUtility.encodeText(fds.getName(),"GBK", "B"));
					mp.addBodyPart(mbp3);
				}
			}
			mailMessage.setContent(mp);
			javax.mail.Transport.send(mailMessage);
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
		request.getRequestDispatcher("ok.jsp").forward(request, response);
	}
}
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值