`

利用JAVA API发送E-mail

 
阅读更多

JAVA API 文档见附件

 

/**
 *
 * SendMail.java
 */
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.URLDataSource;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

//import javax.mail.internet.MailDateFormat;

public class SendMail {
        public static String TEXT = "text/plain;charset=gb2312";
        public static String HTML = "text/html;charset=gb2312";
        private String host; //邮件服务器
        private String user; //用户名
        private String pass;//用户密码
        private String from;//发信人
        private String to;//收信人
        private String cc;//Carbon Copy, 抄送邮件给某人
        private String bc;//bcc Blind Carbon Copy,隐蔽副本 隐蔽抄送给某人
        private String subject;//邮件主题
        private BodyPart body;//邮件内容
        private boolean needAuth; //是否需要认证
        private List attaches;//邮件附件
/**
 * 构造方法
 *
 */
        public SendMail() {
                needAuth = true;
                attaches = new ArrayList();
        }
        /**
         * 构造方法
         * @param host
         */
        public SendMail(String host) {
                needAuth = true;
                attaches = new ArrayList();
                this.host = host;
        }
        /**
         * 构造方法
         * @param host
         * @param user
         * @param pass
         */
        public SendMail(String host, String user, String pass) {
                needAuth = true;
                attaches = new ArrayList();
                this.host = host;
                this.user = user;
                this.pass = pass;
        }
//设置邮件服务器是否需要认证
        public void setNeedAuth(boolean needAuth) {
                this.needAuth = needAuth;
        }
        public void setFrom(String from) {
                this.from = from;
        }
        public void setTo(String to) {
                this.to = to;
        }
        public String getPass() {
                return pass;
        }
        public String getUser() {
                return user;
        }
        public void setPass(String string) {
                pass = string;
        }
        public void setUser(String string) {
                user = string;
        }

        public String getFrom() {
                return from;
        }
        public String getHost() {
                return host;
        }
        public boolean isNeedAuth() {
                return needAuth;
        }
        public String getSubject() {
                return subject;
        }
        public void setHost(String string) {
                host = string;
        }
        public void setBlindTo(String bc) {
                this.bc = bc;
        }
        public void setCopyTo(String cc) {
                this.cc = cc;
        }
        public void setSubject(String subject) {
                this.subject = subject;
        }
/**
 * 设置邮件内容的形式
 * @param string
 * @param contentType
 */
        public void setBody(String string, String contentType) {
                try {
                        body = new MimeBodyPart();
                        DataHandler dh = new DataHandler(string, contentType);
                        body.setDataHandler(dh);
                } catch (Exception exception) {
                }
        }
/**
 * 设置邮件的内容的格式为文本格式
 * @param string
 */
        public void setBodyAsText(String string) {
                setBody(string, TEXT);
        }
/**
 * 以HTMl的形式存放内容
 * @param string
 */
        public void setBodyAsHTML(String string) {
                setBody(string, HTML);
        }
/**
 * 从文件中自动导入邮件内容
 * @param filename
 */
        public void setBodyFromFile(String filename) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        FileDataSource fds = new FileDataSource(filename);
                        DataHandler dh = new DataHandler(fds);
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
 * 从一个URL导入邮件的内容
 * @param url
 */
        public void setBodyFromUrl(String url) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        URLDataSource ur = new URLDataSource(new URL(url));
                        DataHandler dh = new DataHandler(ur);
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
 * 将String中的内容存放入文件showname,并将这个文件作为附件发送给收件人
 * @param string 为邮件的内容
 * @param showname 显示的文件的名字
 */
        public void addAttachFromString(String string, String showname) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        DataHandler dh = new DataHandler(string, TEXT);
                        mdp.setFileName(MimeUtility.encodeWord(showname, "gb2312", null));
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
 * filename为邮件附件
 *在收信人的地方以showname这个文件名来显示
 * @param filename
 * @param showname
 */
        public void addAttachFromFile(String filename, String showname) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        FileDataSource fds = new FileDataSource(filename);
                        DataHandler dh = new DataHandler(fds);
                        mdp.setFileName(MimeUtility.encodeWord(showname, "gb2312", null));
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
 * 将互联网上的一个文件作为附件发送给收信人
 * 并在收信人处显示文件的名字为showname
 * @param url
 * @param showname
 */
        public void addAttachFromUrl(String url, String showname) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        URLDataSource ur = new URLDataSource(new URL(url));
                        DataHandler dh = new DataHandler(ur);
                        mdp.setFileName(MimeUtility.encodeWord(showname, "gb2312", null));
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
 * 发送邮件,需要身份认证
 * @throws Exception
 */
        public void send() throws Exception {
                try {
                        Properties props = new Properties();
                        if (host != null && !host.trim().equals(""))
                                props.put("mail.smtp.host", host);
                        else
                                throw new Exception("没有指定发送邮件服务器");
                        if (needAuth)
                                props.put("mail.smtp.auth", "true");
                        Session s = Session.getInstance(props, null);
                        MimeMessage msg = new MimeMessage(s);
                        //设置邮件主题
                        msg.setSubject(subject);
                        //设置邮件发送时间
                        msg.setSentDate(new Date());
                        //制定发件人
                        if (from != null)
                                msg.addFrom(InternetAddress.parse(from));
                        else
                                throw new Exception("没有指定发件人");
                        //指定收件人
                        if (to != null)
                                msg.addRecipients(javax.mail.Message.RecipientType.TO,
                                                InternetAddress.parse(to));
                        else
                                throw new Exception("没有指定收件人地址");
                        //指定抄送给谁
                        if (cc != null)
                                msg.addRecipients(javax.mail.Message.RecipientType.CC,
                                                InternetAddress.parse(cc));
                        //制定隐藏抄送给谁
                        if (bc != null)
                                msg.addRecipients(javax.mail.Message.RecipientType.BCC,
                                                InternetAddress.parse(bc));
                        Multipart mm = new MimeMultipart();
                        //设置邮件的附件
                        if (body != null)
                                mm.addBodyPart(body);
                        for (int i = 0; i < attaches.size(); i++) {
                                BodyPart part = (BodyPart) attaches.get(i);
                                mm.addBodyPart(part);
                        }
//   设置邮件的内容
                        msg.setContent(mm);
                        //保存所有改变
                        msg.saveChanges();
                        //发送邮件服务器(SMTP),简单邮件传输协议
                        Transport transport = s.getTransport("smtp");
                        //访问邮件服务器
                        transport.connect(host, user, pass);
                        //发送信息
                        transport.sendMessage(msg, msg.getAllRecipients());
                        //关闭邮件传输
                        transport.close();
                } catch (Exception e) {
                        throw new Exception("发送邮件失败:", e);
                }
        }
}

 

sendmail.jsp:

  <%@ page contentType="text/html;charset=gb2312" language="java" %>
<%@ page import="ten.*,simpleforum.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>发送邮件测试</title>
 <meta name="copyright" content="邮件发送测试. All rights reserved.">
 <meta name="Keywords" content="jsp,servlet,mail">
 <meta name="Description" content="发送邮件测试">
 <meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<%
 String host = ParamUtil.getParameter(request,"host");
 String user = ParamUtil.getParameter(request,"user");
 String password = ParamUtil.getParameter(request,"password");
 String subject = ParamUtil.getParameter(request,"subject");
 String to = ParamUtil.getParameter(request,"to");
 String from = ParamUtil.getParameter(request,"from");
 String bodyashtml = ParamUtil.getParameter(request,"bodyashtml");
 String attachfile = ParamUtil.getParameter(request,"attachfile");
 out.println("<br>"+host);
 out.println("<br>"+user);
 //out.println("<br>"+password);
 out.println("<br>"+subject);
 out.println("<br>"+to);
 out.println("<br>"+from);
 out.println("<br>"+bodyashtml);
 out.println("<br>"+attachfile);
 try {
   SendMail send = new SendMail();
   send.setHost(host);
   send.setUser(user);
   send.setPass(password);
   send.setSubject(subject);
   send.setTo(to);
   send.setFrom(from);
   send.setBodyAsHTML(bodyashtml);
   send.addAttachFromFile(attachfile,"aa.txt");
   send.send();
   out.println("<br>邮件发送成功!!!");
  } catch (Exception e) {
   out.println("<br>"+e.getMessage());
   out.println("<br>邮件发送失败!!!");
  }
%>
</body>
</html>

testmail.jsp:

<%@ page contentType="text/html;charset=gb2312" language="java" %>
<%@ page import="ten.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>发送邮件测试</title>
 <meta name="copyright" content="邮件发送测试. All rights reserved.">
 <meta name="Keywords" content="jsp,servlet,mail">
 <meta name="Description" content="发送邮件测试">
 <meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<form method="post" action="sendmail.jsp">
  <table border="1" cellpadding="0" cellspacing="3" align="center">
   <tr>
    <td>邮件服务器</td><td><input type="text" name="host" value="mail.keylab.net"></td>
   </tr>
   <tr>
    <td>用户名</td><td><input type="text" name="user" value="wangmj@keylab.net"></td >
   </tr>
   <tr>
    <td>密码</td><td><input type="password" name="password" value="root3wmj"></td>
   </tr>
   <tr>
    <td>邮件主体</td><td><input type="text" name="subject" value="邮件发送测试"></td>
   </tr>
   <tr>
    <td>收件人</td><td><input type="text" name="to" value="wangmj@keylab.net"></td >
   </tr>
   <tr>
    <td>发送人</td><td><input type="text" name="from" value="wangmj@keylab.net"></td >
   </tr>
   <tr>
    <td>邮件内容</td><td><input type="text" name="bodyashtml" value="大家好!邮件测试。"></td>
   </tr>
   <tr>
    <td>附件</td><td><input type="text" name="attachfile" value="d://myforum.txt"></td>
   </tr>
   <tr>
    <td><input type="submit" name="submit" value="发送" ></td>
    <td><input type="reset" name="reset" value="重置" ></td>
   </tr>
  </table>
</form>
</body>
</html>

分享到:
评论

相关推荐

    用Java实现E-mail客户端.rar_java E-ma_java mail_java mail api_javamail_

    本项目“用Java实现E-mail客户端”就是一个基于JavaMail API的简单示例,旨在展示如何利用Java进行E-mail操作。 首先,JavaMail API提供了对SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol ...

    Java案例开发锦集

    案例4 利用Java API发送E-mail 案例5 从Mail Server删除一条消息 案例6 在Java程序中实现FTP的功能 案例7 一个最简单的聊天程序 案例8 代理服务器的实现 第十章 Java综合实例 案例1 用Java...

    Java实现e-mail邮件客户端(仅支持发送邮件)

    本项目“Java实现e-mail邮件客户端”专注于发送邮件功能,它利用Java的图形用户界面(GUI)设计,让用户能够方便地输入邮件信息并发送。 首先,我们需要了解JavaMail API的核心组件: 1. **Properties对象**:存储...

    JAVA 范例大全 光盘 资源

    实例181 利用Java API发送E-mail 574 第19章 数据库技术 583 实例182 连接各种数据库 583 实例183 创建表结构 587 实例184 表数据的基本操作 590 实例185 批处理 593 实例186 事务处理 596 实例187 Applet...

    Java mail 利用 QQ邮件服务器 批量 发送 邮件

    通过以上步骤,你就能够利用Java Mail API和QQ邮件服务器批量发送邮件了。记住,发送大量邮件时应遵循邮件服务器的使用政策,避免被标记为垃圾邮件。同时,确保你的应用程序具有良好的用户体验,如提供进度反馈和...

    java-Mail-代码例子-(直接复制可用).txt

    JavaMail 是 Sun Microsystems 提供的一套 API 集合,用于在 Java 应用程序中发送和接收电子邮件。它支持多种协议,如 SMTP、IMAP 和 POP3 等。通过 JavaMail,开发者可以轻松地实现邮件功能,而无需深入了解底层...

    Java Mail-Java 邮件发送示例

    本教程将详细讲解如何利用JavaMail API实现邮件发送功能,特别是针对无需邮件服务器的情况,例如直接使用网易163邮箱进行发送。 首先,要使用JavaMail,我们需要引入相关的依赖库。在Maven项目中,可以在pom.xml...

    用Java Mail发送带有图片的html格式的邮件.txt

    通过以上介绍,我们可以看到,使用Java Mail API发送带有图片的HTML邮件虽然涉及一些复杂的步骤,但通过合理地组织代码和利用Java Mail API提供的功能,完全可以实现这一目标。对于从事Java开发的工程师来说,掌握这...

    基于Java的邮件发送模板

    本篇文章将详细讲解如何利用Java实现邮件发送,并结合Apache的相关库来创建邮件发送模板,以提升效率和用户体验。 首先,JavaMail API是Java中用于处理电子邮件的主要库。它提供了丰富的API,可以用来创建、发送和...

    Java Mail 发布邮件

    这个压缩包文件很可能包含了一组示例代码或工具,帮助我们理解如何使用Java Mail API来实现邮件功能。 在Java中,发送邮件主要依赖于JavaMail API和Java Activation Framework (JAF)。JavaMail API负责邮件的创建、...

    SpringBoot集成E-mail发送各种类型邮件

    SpringBoot通过其内置的`spring-boot-starter-mail`模块提供了便捷的邮件发送功能,结合JDK的邮件API,我们可以轻松地实现邮件的发送。 首先,为了集成SpringBoot的邮件服务,我们需要在项目的`build.gradle`或`pom...

    java发送邮件Demo

    这就是使用JavaMail API发送邮件的基本过程。你可以在此基础上添加更复杂的功能,如附件、HTML内容、抄送和密送等。这个“java发送邮件Demo”为你提供了一个良好的起点,帮助你理解和实现基于Java的邮件发送功能。

    JAVA Web程序设计-3期(KC006) 13-1-2应用JavaMail组件发送邮件的操作步骤.doc

    JavaMail API是一个允许Java应用程序读取和发送邮件的标准接口。它支持多种邮件协议,并提供了丰富的API来处理各种邮件任务。JavaMail可以与不同的服务提供商一起工作,如Gmail、Yahoo Mail等,使得开发者能够轻松地...

    java发送邮件实例

    Java程序可以利用SMTP服务发送邮件,但需要通过一个API来实现,JavaMail就是这样的工具。 JavaMail API是Java中用于处理邮件的接口库,它提供了创建、发送和接收邮件的功能。要使用JavaMail发送邮件,你需要以下...

    java 定时 发送 信息类似于闹钟

    在Java编程中,实现定时发送信息的功能,可以利用Java的定时任务处理库,例如`java.util.Timer`类或`java.util.concurrent.ScheduledExecutorService`。这些工具可以帮助我们创建一个类似于闹钟的服务,按照预设的...

    用java发送电子邮件

    JavaMail API是Java平台上的一个标准API,它提供了邮件处理的功能,包括创建、发送、接收和管理邮件。这个API包括了`javax.mail`和`javax.mail.internet`两个主要包,包含了各种邮件相关的类和接口。 2. **必备库*...

    Knock-mail-Verify-if-email-exists-or-find-valid-E-mail-SCRIPT-CODE-:###

    标题中的“Knock-mail-Verify-if-email-exists-or-find-valid-E-mail-SCRIPT-CODE-”表明这是一个关于验证电子邮件地址是否有效或存在的脚本代码。在IT行业中,这通常涉及到电子邮件验证技术,它可以帮助用户确保...

    springboot-mail.zip

    在处理邮件发送功能时,SpringBoot提供了便捷的集成方案,使得开发者无需深入理解JavaMail API的复杂性,即可轻松实现邮件服务。 在SpringBoot中,邮件服务的实现主要依赖于`spring-boot-starter-mail`这个starter...

    java实现邮箱发送(定时发送)

    要实现邮箱发送,你需要引入JavaMail API的相关依赖,通常包括`javax.mail`和`javax.mail-api`这两个库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; ...

    利用javamail api实现的邮件发送类

    JavaMail API 是一个开源的Java库,用于处理电子邮件的创建、发送和接收。这个API提供了一组接口和类,使得开发者能够直接与SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)服务器进行交互...

Global site tag (gtag.js) - Google Analytics