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

简介: 该教程展示了如何使用Servlet通过JavaMail API发送带附件的电子邮件。首先,确保安装了JavaMail API和JAF。在示例代码`SendEmail.java`中,创建MimeMessage对象,设置发件人、收件人、主题和正文。然后添加MimeBodyPart用于文本和附件,使用Multipart组合它们。最后,通过Transport.send()发送邮件。如果需要认证,可添加"mail.user"和"mail.password"属性。编译并运行Servlet即可发送邮件。

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

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 上发送带有文件附件的消息。

用户身份认证部分
如果需要向电子邮件服务器提供用户 ID 和密码进行身份认证,那么您可以设置如下属性:

props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");
电子邮件发送机制的其余部分与上面讲解的保持一致。

目录
相关文章
|
27天前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
64 20
|
7月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n),利用`request.getLocale()`获取用户区域设置,通过`DateFormat`类格式化特定区域的日期。示例代码演示了根据用户区域显示相应日期,强调了处理多语言网站的关键方法,如`getCountry()`、`getLanguage()`等。
56 6
|
5月前
|
前端开发 Java 应用服务中间件
JavaEE:Servlet后端搭建部署 一条龙全教程
JavaEE:Servlet后端搭建部署 一条龙全教程
|
7月前
|
开发框架 缓存 Java
JSP 教程 之 Eclipse JSP/Servlet 环境搭建 1
本教程指导如何使用Eclipse搭建JSP/Servlet开发环境。需下载Eclipse J2EE和Tomcat,将Tomcat解压至无中文和空格的D盘目录。启动Tomcat后,服务器运行,通过浏览器访问`http://localhost:8080/`。在Tomcat的webapps\ROOT目录创建test.jsp文件,输入代码并访问`http://localhost:8080/test.jsp`以验证环境配置成功。
114 1
|
7月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 4
Servlet教程之国际化讲解了如何根据用户区域设置展示多语言内容。关键术语包括国际化(i18n)、本地化(l10n)和区域设置(locale)。Servlet通过`request.getLocale()`获取区域设置,并使用`NumberFormat`类格式化特定区域的货币。示例代码展示了如何根据客户端locale显示货币格式。
45 3
|
7月前
|
定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n)。通过request对象的getLocale()获取用户区域设置,利用DateFormat进行特定区域的日期格式化。示例代码显示了根据用户浏览器设置显示相应语言和文化的日期。
49 2
|
7月前
|
Java 关系型数据库 MySQL
Servlet 教程 之 Servlet 有用的资源
探索Servlet世界:访问Sun&#39;s Site获取官方资料,Tomcat作为开源JSP引擎,搭配MySQL Connector/J实现数据库连接。深入学习Java编程,参考The Java Tutorials及Java 2 SDK文档,免费下载Java并关注Sun Developer Network获取最新资源。
51 1
|
7月前
|
缓存 小程序 Java
Servlet 教程 之 Servlet 调试 6
Servlet调试涉及大量客户端/服务器交互,常带来困难。使用JDB调试器调试HttpServer来模拟HTTP请求,需设置正确类路径,包括servlet和相关类,以及servlet和支撑类的路径。通过在Servlet代码中设置断点,通过浏览器触发请求进行调试。注释法也可辅助调试,通过暂时移除部分代码观察bug变化。查看HTTP头信息对理解Servlet行为有帮助。关键技巧包括:注意classes目录不重载,强制浏览器刷新避免缓存,确保servlet的init()方法正确处理ServletConfig。
54 3
|
7月前
|
定位技术
Servlet 教程 之 Servlet 国际化 2
Servlet教程展示了如何实现网站的国际化(i18n)和本地化(l10n)。通过识别用户的区域设置(locale),Servlet可以提供不同语言版本的页面。`request.getLocale()`用于获取用户浏览器的locale。关键方法包括`getCountry()`、`getDisplayCountry()`、`getLanguage()`和`getDisplayLanguage()`,用于获取国家、语言名称及其显示形式。设置`Content-Language`头确保西欧语言的正确显示,例如在Servlet示例中,使用HTML实体显示西班牙语字符。
43 0
|
7月前
|
定位技术
Servlet 教程 之 Servlet 国际化 1
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n),通过request对象的getLocale()获取用户区域设置。方法如:getCountry(), getDisplayCountry(), getLanguage(), 和 getDisplayLanguage()等用于检测语言和国家信息。实例中,Servlet展示请求的语言和国家,以响应不同区域设置的用户需求。
33 0