多附件邮件的发送实例,附件上传这部分我用的是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);
}
}
分享到:
相关推荐
JavaMail是一种广泛使用的Java库,它允许开发人员在Java应用程序中发送和接收电子邮件。这个教程主要关注的是如何使用JavaMail发送简单的HTML邮件,这在现代应用程序中非常常见,因为HTML邮件可以提供更丰富的格式和...
在IT行业中,电子邮件的收发是一项基础且重要的功能,尤其对于开发者来说,了解如何...通过理解和实践这些示例,开发者可以更好地掌握JavaMail API和James服务器的使用,从而在自己的应用中实现高效、稳定的邮件服务。
本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...
在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在邮件中包含多媒体内容,如图片、文档、音频或视频文件等。 在JavaMail中,`...
在IT行业中,电子邮件是...总的来说,JMail组件提供了强大且灵活的邮件处理能力,无论是发送带有附件的邮件,还是从邮箱中下载附件,都可以轻松实现。理解并掌握上述步骤,你就能在Java项目中自如地处理邮件通信了。
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者能够轻松地处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在...
JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...
这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...
06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe
JavaMail邮件发送(带附件)
2. **SMTP协议**:JavaMail 使用简单邮件传输协议(SMTP)来发送邮件。通过SMTP服务器,程序能够将邮件路由到正确的收件人。 3. **POP3和IMAP协议**:对于邮件接收,JavaMail 提供了对邮局协议第三版(POP3)和...
JavaMail邮件发送实例是Java开发中常见的一个应用场景,主要用于实现程序自动发送电子邮件的功能。这个实例可以帮助开发者理解如何使用JavaMail API来构建邮件服务。在JavaMail API中,我们可以使用MimeMessage类...
使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...
这个实例将向我们展示如何使用JavaMail API在Java中实现邮件发送功能。以下是详细的步骤和相关知识点: 1. **JavaMail API简介**:JavaMail API是Java平台上的标准邮件服务接口,它提供了一系列类和接口,允许开发...
在JavaMail中发送带附件的邮件是一个常见的需求,尤其对于企业级应用或者自动化任务来说。下面将详细介绍如何使用JavaMail来实现这一功能,以及所需依赖和示例代码。 首先,要使用JavaMail,你需要在项目中添加相应...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。这个库提供了一组API,使得开发者能够轻松地在Java应用程序中实现SMTP...在这个实例中,我们学习了如何使用JavaMail发送文本邮件以及带有附件的邮件。
在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的功能。这个系统可能基于JavaMail API来实现邮件的发送,而JavaMail是一个强大的开源库,可以处理复杂的邮件服务...
在JavaMail应用中,这可能是用来将上传的文件保存到临时位置,以便作为邮件附件。 4. **正文文本与图片**: 邮件的正文可以包含纯文本,也可以包含HTML格式的内容,从而可以嵌入图片。JavaMail API 支持发送HTML...
5. `send(MimeMessage message)`: 使用Session实例发送准备好的MimeMessage对象,MimeMessage是JavaMail API中的核心类,用于构建复杂的邮件结构。 为了实现以上功能,JavaMail API的关键类包括`Session`、`...