JSP发送电子邮件

以下内容引用自http://wiki.jikexueyuan.com/project/jsp/sending-email.html

发送一个简单的电子邮件

给出一个简单的例子,从机器上发送一个简单的邮件。假设本地主机连接到互联网,能够足以发送一封电子邮件。

<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
   String result;
   // Recipient‘s email ID needs to be mentioned.
   String to = "[email protected]";

   // Sender‘s email ID needs to be mentioned
   String from = "[email protected]";

   // Assuming you are sending email from localhost
   String host = "localhost";

   // Get system properties object
   Properties properties = System.getProperties();

   // Setup mail server
   properties.setProperty("mail.smtp.host", host);

   // Get the default Session object.
   Session mailSession = Session.getDefaultInstance(properties);

   try{
      // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);
      // Set From: header field of the header.
      message.setFrom(new InternetAddress(from));
      // Set To: header field of the header.
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");
      // Now set the actual message
      message.setText("This is actual message");
      // Send message
      Transport.send(message);
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align="center">
<%
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

现在将上面的代码放在SendEmail.jsp文件,并且使用URL:http://localhost:8080/SendEmail.jsp来调用此JSP,将电子邮件发送到给定的邮箱ID为[email protected]中,显示的响应结果如下所示。

如果想给多个收件人发送邮件,下面的方法可用于发送邮件给指定的多个邮箱IDs:

void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException

下面是对参数的描述:

  • type:可设置为TO,CC或者BCC。其中,CC表示Carbon Copy,BCC表示Black Carbon Copy。例如,Message.RecipientType.TO。
  • addresses:它是邮箱ID的数组。能使用InternetAddress()方法,同时指定邮箱IDs。

发送HTML邮件

这个例子与之前给出的例子非常相似,除了在这个例子中使用setContent()方法设置第二个参数为“text/html”,用来指定网页内容包含在这个信息中。

使用这个例子,可以发送与网页内容一样大的邮件。

<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
   String result;
   // Recipient‘s email ID needs to be mentioned.
   String to = "[email protected]";

   // Sender‘s email ID needs to be mentioned
   String from = "[email protected]";

   // Assuming you are sending email from localhost
   String host = "localhost";

   // Get system properties object
   Properties properties = System.getProperties();

   // Setup mail server
   properties.setProperty("mail.smtp.host", host);

   // Get the default Session object.
   Session mailSession = Session.getDefaultInstance(properties);

   try{
      // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);
      // Set From: header field of the header.
      message.setFrom(new InternetAddress(from));
      // Set To: header field of the header.
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");

      // Send the actual HTML message, as big as you like
      message.setContent("<h1>This is actual message</h1>",
                            "text/html" );
      // Send message
      Transport.send(message);
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>Send HTML Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align="center">
<%
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

现在可以使用上述JSP发送网页信息给指定的邮箱ID。

在电子邮件中发送附件:

给定一个例子,从机器上发送一个带附件的邮箱:

<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
   String result;
   // Recipient‘s email ID needs to be mentioned.
   String to = "[email protected]";

   // Sender‘s email ID needs to be mentioned
   String from = "[email protected]";

   // Assuming you are sending email from localhost
   String host = "localhost";

   // Get system properties object
   Properties properties = System.getProperties();

   // Setup mail server
   properties.setProperty("mail.smtp.host", host);

   // Get the default Session object.
   Session mailSession = Session.getDefaultInstance(properties);

   try{
      // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);

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

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

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

      // Create the message part
      BodyPart messageBodyPart = new MimeBodyPart();

      // Fill the message
      messageBodyPart.setText("This is message body");

      // Create a multipar message
      Multipart multipart = new MimeMultipart();

      // Set text message part
      multipart.addBodyPart(messageBodyPart);

      // Part two is attachment
      messageBodyPart = new MimeBodyPart();
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);

      // Send the complete message parts
      message.setContent(multipart );

      // Send message
      Transport.send(message);
      String title = "Send Email";
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>Send Attachement Email using JSP</title>
</head>
<body>
<center>
<h1>Send Attachement Email using JSP</h1>
</center>
<p align="center">
<%
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

现在可以运行上述JSP发送一个文件作为信息的附件给指定邮箱ID。

用户身份验证部分

为了身份验证的目的,如果需要提供用户ID和密码给邮箱服务器,可以设置这些属性如下:

props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");

邮件发送机制的设置和上述的解释一致。

用表单发送邮件

可以使用网页表单接受邮件参数,然后可以使用Request对象获得如下的所有信息:

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test16

时间: 2024-11-06 02:45:46

JSP发送电子邮件的相关文章

发送电子邮件

思路与技术要运行本实例首先应该构建JavaMail的开发环境,在JDK中配置JavaMail的相关类和包.在构建JavaMail开发环境中,需要mail.jar和activation.jar这两个文件.这两个文件的获得可以通过SUN公司的官方网站下载. 代码如下; <html><head><title>发送电子邮件</title><meta http-equiv="Content-Type" content="text/h

C#发送电子邮件 (异步) z

///验证电子邮件的正则表达式 string emailStr = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"; /// <summary> /// 异步发送电子邮件 /// </summary> /// <param name="fromEmail">发送方电子邮件&

JAVA实现发送电子邮件

相信大家对于网站也好,手机app也好,用户注册时,需要进行邮箱验证的功能特别好奇吧,本篇我将带领大家一起实现一下这个简单而又神奇的小功能,让我们的应用也可以加入这些神奇的元素.废话不多说,下面开始我们今天的内容介绍. 首先实现上面的功能,需要一个固定的发送电子邮件的邮箱地址,这里我们就以我们经常使用的QQ邮箱为例实现一下这个功能. 第一件事,你需要开启QQ邮箱的IMAP/SMAP服务: 登录QQ邮箱-->设置-->账号-->开启IMAP/SMAP与P0P3/SMAP 开启这两个时,你会获

javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)

引言: 此篇是紧随上篇文章而封装出来的,阅读本篇章建议先阅读上一篇  --> javamail模拟邮箱功能发送电子邮件-基础实战篇 上一篇章简单讲解了javamail发送邮件的基本基础和用到的几个类,并且所有初始化和发送方法都封装在一个类里面(为了代码方便演示),本章节将对各个模块进行拆分和优化,并且引入附件发送的方法 要想邮件发送附件,就要引入两个新类  Multipart 和 BodyPart 两类 Multipart(报文部件容器) 实则为一个报文容器,而邮件消息  Msage 是由各个子

发送电子邮件模块smtplib

功能:smtplib模块是通过邮件服务器发送电子邮件,是smtp客户端的实现,支持邮件格式有:文本.HTML.Image.EXCEL等. 1 #!/usr/bin/env python 2 # coding:UTF-8 3 import smtplib 4 import string 5 host = "smtp.qq.com" #定义smtp主机 6 subject = "Test email from Python" #定义邮件主题 7 to_mail = &q

利用Excel批量高速发送电子邮件

利用Excel批量高速发送电子邮件,分两步: 1. 准备待发送的数据: a.) 打开Excel,新建Book1.xlsx b.) 填入以下的内容, 第一列:接收人,第二列:邮件标题,第三列:正文,第四列:附件路径 注意:附件路径中能够有中文,可是不能有空格 这里你能够写很多其它内容,每一行作为一封邮件发出. 注意:邮件正文是黑白文本内容,不支持加粗.字体颜色等.(假设你须要支持彩色的邮件,后面将会给出解决的方法) 2. 编写宏发送邮件 a.) Alt + F11 打开宏编辑器,菜单中选:插入->

javamail 在linux下发送电子邮件出错

javamail  在linux下发送电子邮件出错:javax.mail.MessagingException: 500 Error: bad syntax 解决办法: 首先在Linux命令行中查看hostname[[email protected] ~]# hostnamelinux在/etc/hosts中添加一行127.0.0.1  linux 再用下列命令查看,出来结果即正确[[email protected] ~]# hostname -i127.0.0.1

用Thinphp发送电子邮件的方法

好长时间没有动php了,突然想用thinkphp发送电子邮件,可是查阅了书籍都写的非常乱.没有继续看下去.这里找到了一个比較好的方法: 第一步:首先我们要引入一个外部类库:Mail.class.php 把它放到ORG的文件夹下(就是thinkphp的核心文件夹那一块.假设还不明确,见下图): 这样,我们就把相关的类库引入进来了.类库的下载地址例如以下:Mail.class.php 第二步: 在common/conf/config.php文件增加例如以下的配置信息(不要复制,以下的是自己的邮箱信息

SQL Server 使用触发器(trigger)发送电子邮件

sql 使用系统存储过程 sp_send_dbmail 发送电子邮件语法: sp_send_dbmail [ [ @profile_name = ] 'profile_name' ] [ , [ @recipients = ] 'recipients [ ; ...n ]' ] [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ] [ , [ @blind_copy_recipients = ] 'blind_copy_recipien