`

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);
	}
}
 

 

1
3
分享到:
评论

相关推荐

    JavaMail应用实例说明:简单(HTML)邮件的发送 javaMail基础教程下载

    JavaMail是一种广泛使用的Java库,它允许开发人员在Java应用程序中发送和接收电子邮件。这个教程主要关注的是如何使用JavaMail发送简单的HTML邮件,这在现代应用程序中非常常见,因为HTML邮件可以提供更丰富的格式和...

    james和javamail实现邮件收发(带发送附件)

    在IT行业中,电子邮件的收发是一项基础且重要的功能,尤其对于开发者来说,了解如何...通过理解和实践这些示例,开发者可以更好地掌握JavaMail API和James服务器的使用,从而在自己的应用中实现高效、稳定的邮件服务。

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...

    JavaMail(3)——发送带附件的邮件.docx

    在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在邮件中包含多媒体内容,如图片、文档、音频或视频文件等。 在JavaMail中,`...

    使用Jmail组件发送和接收邮件(含附件)

    在IT行业中,电子邮件是...总的来说,JMail组件提供了强大且灵活的邮件处理能力,无论是发送带有附件的邮件,还是从邮箱中下载附件,都可以轻松实现。理解并掌握上述步骤,你就能在Java项目中自如地处理邮件通信了。

    javamail发送邮件实例

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者能够轻松地处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在...

    JavaMail发送邮件(文本、html、附件)

    JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...

    javamail发送邮件(带附件)

    这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    javamail的jar包:javamail-1.6

    2. **SMTP协议**:JavaMail 使用简单邮件传输协议(SMTP)来发送邮件。通过SMTP服务器,程序能够将邮件路由到正确的收件人。 3. **POP3和IMAP协议**:对于邮件接收,JavaMail 提供了对邮局协议第三版(POP3)和...

    javamail邮件发送实例

    JavaMail邮件发送实例是Java开发中常见的一个应用场景,主要用于实现程序自动发送电子邮件的功能。这个实例可以帮助开发者理解如何使用JavaMail API来构建邮件服务。在JavaMail API中,我们可以使用MimeMessage类...

    使用JAVAMail代发邮件

    使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...

    利用JavaMail发送邮件的实例,可以直接运行

    这个实例将向我们展示如何使用JavaMail API在Java中实现邮件发送功能。以下是详细的步骤和相关知识点: 1. **JavaMail API简介**:JavaMail API是Java平台上的标准邮件服务接口,它提供了一系列类和接口,允许开发...

    JavaMail发送带附件的邮件

    在JavaMail中发送带附件的邮件是一个常见的需求,尤其对于企业级应用或者自动化任务来说。下面将详细介绍如何使用JavaMail来实现这一功能,以及所需依赖和示例代码。 首先,要使用JavaMail,你需要在项目中添加相应...

    javamail 发送邮件 实例

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。这个库提供了一组API,使得开发者能够轻松地在Java应用程序中实现SMTP...在这个实例中,我们学习了如何使用JavaMail发送文本邮件以及带有附件的邮件。

    jsp/servlet javamail 发送邮件 可发送多个附件

    在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的功能。这个系统可能基于JavaMail API来实现邮件的发送,而JavaMail是一个强大的开源库,可以处理复杂的邮件服务...

    javamail发送邮件.zip

    在JavaMail应用中,这可能是用来将上传的文件保存到临时位置,以便作为邮件附件。 4. **正文文本与图片**: 邮件的正文可以包含纯文本,也可以包含HTML格式的内容,从而可以嵌入图片。JavaMail API 支持发送HTML...

    常规JavaMail 邮件发送实用类

    5. `send(MimeMessage message)`: 使用Session实例发送准备好的MimeMessage对象,MimeMessage是JavaMail API中的核心类,用于构建复杂的邮件结构。 为了实现以上功能,JavaMail API的关键类包括`Session`、`...

Global site tag (gtag.js) - Google Analytics