Servlet 教程 之 Servlet 发送电子邮件 3

简介: Servlet教程展示了如何使用JavaMail API和JAF从Servlet发送带附件的电子邮件。首先确保安装了所需库并设置CLASSPATH。示例代码创建MimeMessage,设置收发件人、主题和正文,并添加Multipart附件。当Servlet被调用时,它会发送邮件并显示确认信息。

Servlet 教程 之 Servlet 发送电子邮件 3

Servlet 发送电子邮件

使用 Servlet 发送一封电子邮件是很简单的,但首先您必须在您的计算机上安装 JavaMail API 和 Java Activation Framework)JAF)。

在电子邮件中发送附件

下面的实例将从您的计算机上发送一封带有附件的电子邮件。这里假设您的本地主机已连接到互联网,并支持发送电子邮件。同时确保 Java Email API 包和 JAF 包的所有的 jar 文件在 CLASSPATH 中都是可用的。

// 文件名 SendEmail.java
import java.io.;
import java.util.
;
import javax.servlet.;
import javax.servlet.http.
;
import javax.mail.;
import javax.mail.internet.
;
import javax.activation.*;

public class SendEmail extends HttpServlet{

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// 收件人的电子邮件 ID
String to = "abcd@gmail.com";

  // 发件人的电子邮件 ID
  String from = "web@gmail.com";

  // 假设您是从本地主机发送电子邮件
  String host = "localhost";

  // 获取系统的属性
  Properties properties = System.getProperties();

  // 设置邮件服务器
  properties.setProperty("mail.smtp.host", host);

  // 获取默认的 Session 对象
  Session session = Session.getDefaultInstance(properties);

  // 设置响应内容类型
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();

   try{
     // 创建一个默认的 MimeMessage 对象
     MimeMessage message = new MimeMessage(session);

     // 设置 From: header field of the header.
     message.setFrom(new InternetAddress(from));

     // 设置 To: header field of the header.
     message.addRecipient(Message.RecipientType.TO,
                              new InternetAddress(to));

     // 设置 Subject: header field
     message.setSubject("This is the Subject Line!");

     // 创建消息部分 
     BodyPart messageBodyPart = new MimeBodyPart();

     // 填写消息
     messageBodyPart.setText("This is message body");

     // 创建一个多部分消息
     Multipart multipart = new MimeMultipart();

     // 设置文本消息部分
     multipart.addBodyPart(messageBodyPart);

     // 第二部分是附件
     messageBodyPart = new MimeBodyPart();
     String filename = "file.txt";
     DataSource source = new FileDataSource(filename);
     messageBodyPart.setDataHandler(new DataHandler(source));
     messageBodyPart.setFileName(filename);
     multipart.addBodyPart(messageBodyPart);

     // 发送完整的消息部分
     message.setContent(multipart );

     // 发送消息
     Transport.send(message);
     String title = "发送电子邮件";
     String res = "成功发送电子邮件...";
     String docType = "<!DOCTYPE html> \n";
     out.println(docType +
     "<html>\n" +
     "<head><title>" + title + "</title></head>\n" +
     "<body bgcolor=\"#f0f0f0\">\n" +
     "<h1 align=\"center\">" + title + "</h1>\n" +
     "<p align=\"center\">" + res + "</p>\n" +
     "</body></html>");
  }catch (MessagingException mex) {
     mex.printStackTrace();
  }

}
}
编译并运行上面的 Servlet ,在给定的电子邮件 ID 上发送带有文件附件的消息。

目录
相关文章
|
SQL 自然语言处理 监控
PostgreSQL插件汇总
一专多长的数据库——PostgreSQL
3226 0
|
存储 JSON 数据格式
JSON - JSONObject 按 Put 顺序输入和输出
JSON - JSONObject 按 Put 顺序输入和输出
1226 0
JSON - JSONObject 按 Put 顺序输入和输出
|
1月前
|
Linux API iOS开发
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
187 14
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
1月前
|
人工智能 自然语言处理 TensorFlow
134_边缘推理:TensorFlow Lite - 优化移动端LLM部署技术详解与实战指南
在人工智能与移动计算深度融合的今天,将大语言模型(LLM)部署到移动端和边缘设备已成为行业发展的重要趋势。TensorFlow Lite作为专为移动和嵌入式设备优化的轻量级推理框架,为开发者提供了将复杂AI模型转换为高效、低功耗边缘计算解决方案的强大工具。随着移动设备硬件性能的不断提升和模型压缩技术的快速发展,2025年的移动端LLM部署已不再是遥远的愿景,而是正在成为现实的技术实践。
|
2月前
|
中间件 测试技术 应用服务中间件
vulnhub靶机实战_DC-5
本教程介绍如何下载并配置DC-5靶机进行安全测试。内容包括靶机下载链接、VMware导入步骤、网络设置及Nmap扫描分析,帮助快速搭建渗透测试环境。
228 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
38_多模态模型:CLIP的视觉-语言对齐_深度解析
想象一下,当你看到一张小狗在草地上奔跑的图片时,你的大脑立刻就能将视觉信息与"小狗"、"草地"、"奔跑"等概念联系起来。这种跨模态的理解能力对于人类来说似乎是理所当然的,但对于人工智能系统而言,实现这种能力却经历了长期的技术挑战。多模态学习的出现,标志着AI从单一模态处理向更接近人类认知方式的综合信息处理迈出了关键一步。
|
5月前
TortoiseSVN使用-TortoiseSVN更换或重置登录用户
TortoiseSVN使用-TortoiseSVN更换或重置登录用户
266 5
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
190 2