📅  最后修改于: 2023-12-03 15:20:06.450000             🧑  作者: Mango
在Web应用中,发送电子邮件是一项常见的任务。在Servlet中,我们可以使用JavaMail API来发送电子邮件。本文将介绍如何使用Servlet发送电子邮件。
首先,我们需要添加JavaMail API依赖。将以下依赖添加到您的项目的pom.xml文件中:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
在Servlet中,我们可以使用JavaMailSession类来创建电子邮件会话。下面是一个简单的示例代码,它可以发送一封带有文本和HTML内容的电子邮件:
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Properties;
@WebServlet("/sendEmail")
public class SendEmailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数
String recipient = request.getParameter("recipient");
String subject = request.getParameter("subject");
String message = request.getParameter("message");
// 设置邮件属性
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
// 创建会话
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("your-email-address@gmail.com", "your-email-password");
}
});
try {
// 创建邮件
Message mail = new MimeMessage(session);
mail.setFrom(new InternetAddress("your-email-address@gmail.com"));
mail.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
mail.setSubject(subject);
// 创建Multipart对象
Multipart multipart = new MimeMultipart();
// 配置文本部分
MimeBodyPart textPart = new MimeBodyPart();
textPart.setText(message, "utf-8");
// 配置HTML部分
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(message, "text/html;charset=utf-8");
// 将文本部分和HTML部分添加到Multipart
multipart.addBodyPart(textPart);
multipart.addBodyPart(htmlPart);
// 将Multipart添加到邮件中
mail.setContent(multipart);
// 发送邮件
Transport.send(mail);
// 发送成功,重定向到“发送成功”页面
response.sendRedirect("sendSuccess.jsp");
} catch (MessagingException e) {
// 发送失败,重定向到“发送失败”页面
response.sendRedirect("sendFail.jsp");
}
}
}
在这个示例中,我们使用Gmail SMTP服务器来发送邮件。您需要替换“your-email-address”和“your-email-password”为您自己的电子邮件地址和密码。
最后,我们需要创建一个表单页面来收集电子邮件信息,然后将表单提交到SendEmailServlet。以下是一个简单的表单页面示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Send Email Form</title>
</head>
<body>
<h1>Send Email</h1>
<form method="post" action="sendEmail">
<label for="recipient">Recipient:</label>
<input type="email" id="recipient" name="recipient" required><br>
<label for="subject">Subject:</label>
<input type="text" id="subject" name="subject" required><br>
<label for="message">Message:</label>
<textarea id="message" name="message" required></textarea><br>
<input type="submit" value="Send">
</form>
</body>
</html>
现在您已经知道如何在Servlet中发送电子邮件。使用JavaMail API,可以轻松地添加电子邮件功能到您的Web应用中。