专栏首页HongtenJava Web JavaMail 邮件发送

Java Web JavaMail 邮件发送

  JavaMail是java技术当中用来发送邮件和接收邮件的API,JavaMail在java开发中是应用比较

广泛的,很多时候,我们都需要邮件发送和接收的功能。

  如我们开发的一个网络书店,当用户下了订单之后,我们都会把订单信息发送到用户的邮箱当中

这是就可以使用JavaMail技术了。

  下载JavaMail:

http://java.sun.com/products/javamail/index.html

    得到:javamail1_4_4.zip          解压;mail.jar

测试代码一:

SendMail.java

代码:

package webbook.chapter16; import javax.mail.*; import javax.mail.internet.*; import java.util.*;

public class SendMail {  public static void main(String[] args) {   try {    Properties props = new Properties();    Session session = Session.getInstance(props, null);    // 在属性中设置发送邮件服务器地址与协议    props.put("mail.host", "127.0.0.1");    props.put("mail.transport.protocol", "smtp");    Message message = new MimeMessage(session);    // 设置发件人    message.setFrom(new InternetAddress("hongtenzone@foxmail.com"));    // 设置收件人, Message.RecipientType.CC是设置抄送者    message.setRecipient(Message.RecipientType.TO, new InternetAddress("receiver@163.com"));    message.setRecipient(Message.RecipientType.CC, new InternetAddress("web@foxmail.com"));    message.setSubject("问候"); // 邮件主题    message.setSentDate(new Date()); // 发送时间    message.setText("这是一个测试!\n哈哈,你好!\n呵呵!"); //内容       Transport.send(message);   } catch (MessagingException m) {    m.printStackTrace();   }  } }

说明;

这个程序有很大的限制:

  首先,在本机要装一个邮件服务器,也可以使用其他人的邮件服务器,比如你公司专有的邮件服务器。

还可以使用免费的邮件服务器,如:sina,搜狐,网易等,他们都有免费邮件服务,但是需要一些身份验证,

有一些麻烦……

  那有没有其他方法呢?

测试代码二:

下载Apache Commons Email组件

   下载地址:http://commons.apache.org/mail/

   下载:commons-email-1.2-bin.zip        得到:commons-email-1.2.jar

新建web project项目:

  Build Path: commons-email-1.2.jar           javaMail1.2.jar

sendMail.jsp

代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head><title>Send E-Mail Form</title></head> <style>* {font-family:"宋体" ; font-size: 14px }</style> <body> <p><font color="red">发送邮件的程序</font></p>   <form action="<%=request.getContextPath()%>/servlet/sendMail" method="post">     <table cellspacing="2" cellpadding="2" border="0">            <tr><td>收件人</td>         <td><input type="text" name="to" size="30"></td>       </tr>       <tr><td>发件人</td>         <td><input type="text" name="from" size="30"></td>       </tr>       <tr><td>主题</td>         <td><input type="text" name="subject" size="30"></td>       </tr>       <tr><td valign="top">正文</td>         <td><textarea cols="50" rows="15" name="body"></textarea></td>       </tr>       <tr><td></td><td>     <input type="submit" value="提交"><input type="reset" value="重置"></td>       </tr>     </table>   </form> </body> </html>

SendMailServlet.java

代码:

package webbook.chapter16; import java.io.IOException; import javax.servlet.http.*; import javax.servlet.ServletException; import org.apache.commons.mail.*;

public class SendMailServlet extends HttpServlet {  private static final long serialVersionUID = -3302031686208755627L;

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   request.setCharacterEncoding("UTF-8");   SimpleEmail email = new SimpleEmail();   email.setHostName("smtp.sina.com");   email.setAuthentication("web08", "web2008");   try {       email.setCharset("UTF-8");    email.addTo(request.getParameter("to"));    email.setFrom(request.getParameter("from"));    email.setSubject(request.getParameter("subject"));       email.setMsg(request.getParameter("body"));    email.send();    request.setAttribute("sendmail.message", "邮件发送成功!");      } catch (EmailException e) {        e.printStackTrace();    request.setAttribute("sendmail.message", "邮件发送不成功!");      }   request.getRequestDispatcher("/sendResult.jsp").forward(request, response);  } }

sendResult.jsp

代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head><title>Send E-Mail result page</title></head> <style> * { font-family:"宋体" ; font-size: 14px } </style> <body> <p><font color="red">${requestScope['sendmail.message']}</font></p> <p><a href="<%=request.getContextPath()%>/sendMail.jsp">返回</a></p> </body> </html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入探索Java 8 Lambda表达式

    本文为 InfoQ 中文站特供稿件,首发地址为:http://www.infoq.com/cn/articles/Java-8-Lambdas-A-Peek-U...

    技术小黑屋
  • 什么是字节码?

    字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。字节是电脑里的数据量单位。

    用户2436820
  • 探究Java中的克隆

    克隆,想必大家都有耳闻,世界上第一只克隆羊多莉就是利用细胞核移植技术将哺乳动物的成年体细胞培育出新个体,甚为神奇。其实在Java中也存在克隆的概念,即实现对象的...

    技术小黑屋
  • 泛型程序设计

    当程序调用泛型类型,如果擦除返回类型,编译器将插入强制类型转换 Pair<Employee> buddies = . . Employee buddy = ...

    用户2436820
  • 理解Java中的ThreadLocal

    提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总...

    技术小黑屋
  • 详解Java中的注解

    在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代...

    技术小黑屋
  • Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之环境部署

    您或许听说过区块链,但可能不确定它对 Java™ 开发人员有何用。本教程将帮助大家解惑。我将分步展示如何使用 Hyperledger Fabric v0.6 来...

    笔阁
  • 一个事半功倍的Java反射库

    在Java和Android中,我们常常会使用反射来达到一些兼容的目的。Java原生提供的反射很是麻烦,使用起来很是不方便。比如我们想要调UserManager的...

    技术小黑屋
  • 分布式对象之客户\服务器角色以及RMI初探

    程序员希望通过无所不在的java对象来作为所有问题的解决之道,思想就是通过网络请求相互协作。我可以调用一个远程对象帮我得到我所要的信息,并作为响应的一部分返回

    用户2436820
  • java基本程序设计

    保护对象实例域,提供黑盒的概念保护数据域的安全,体现了面向对象思想。数据>算法的思想

    用户2436820

扫码关注云+社区

领取腾讯云代金券