zoukankan      html  css  js  c++  java
  • 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 = "abcd@gmail.com";
    
       // Sender's email ID needs to be mentioned
       String from = "mcmohd@gmail.com";
    
       // 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 + "
    ");
    %>
    </p>
    </body>
    </html>

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

    如果想给多个收件人发送邮件,下面的方法可用于发送邮件给指定的多个邮箱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 = "abcd@gmail.com";
    
       // Sender's email ID needs to be mentioned
       String from = "mcmohd@gmail.com";
    
       // 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 + "
    ");
    %>
    </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 = "abcd@gmail.com";
    
       // Sender's email ID needs to be mentioned
       String from = "mcmohd@gmail.com";
    
       // 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 + "
    ");
    %>
    </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

  • 相关阅读:
    iOS常用框架总结
    【Java】使用@Value @Reource或@Autowire依赖 (值) 注入时出现NPE的排查方法
    【Java】事件驱动模型和观察者模式
    新人训练营心得 - 道路阻且长
    【Java】Spring Web MVC注意事项
    【Linux】OpenWRT的无线设置注意事项——从2.4G到5G,hwmode不简单
    【Java】 Spring依赖注入小试牛刀:编写第一个Spring ApplicationContext Demo
    【Linux】 awk应用
    【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?
    【设计模式】C++单例模式的几种写法——Java自动加载内部类对象,C++怎么破?
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6954664.html
Copyright © 2011-2022 走看看