`
enjoy2010
  • 浏览: 23459 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用javamail 发送邮件

 
阅读更多

package com.util.mail;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
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;

/**
 * 发送邮件
 *
 * @author Admin
 *
 */
public class SendMail {

    /**
     * MiMe 邮件对象
     */
    private MimeMessage mimeMsg;
    /**
     * 保持会话的Session
     */
    private Session session;
    /**
     * 保存系统属性
     */
    private Properties props;
    /**
     * 是否需要验证
     */
    private boolean needAuth;

    /**
     * Multipart 对象,邮件内容、标题、附件等添加完成后生成MimeMessage 对象
     */
    private Multipart mp;

    /**
     * 用户名
     */
    private String username = "";
    /**
     * 密码
     */
    private String password = "";

//    public SendMail() {
//
//        setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取
//
//        createMimeMessage();
//
//    }

    public SendMail(String smtp) {

        setSmtpHost(smtp);

        createMimeMessage();

    }

    /**
     *
     * @param hostName
     *            String
     */

    public void setSmtpHost(String hostName) {  // hostName=smtp.msn.com

        System.out.println("设置系统属性:mail.smtp.host = " + hostName);

        if (props == null) {
            props = System.getProperties(); // 获得系统属性对象
        }
      
        /**
         * mail.smtp.host   发信服务器地址
         */
        props.put("mail.smtp.host", hostName); // 设置SMTP主机  

    }

    /**
     *
     * @return boolean
     */

    public boolean createMimeMessage()

    {

        try {

            System.out.println("准备获取邮件会话对象!");

            session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
       
           
        }

        catch (Exception e) {

            System.err.println("获取邮件会话对象时发生错误!" + e);

            return false;

        }

        System.out.println("准备创建MIME邮件对象!");

        try {

            mimeMsg = new MimeMessage(session); // 创建MIME邮件对象

            mp = new MimeMultipart();

            return true;

        }

        catch (Exception e) {

            System.err.println("创建MIME邮件对象失败!" + e);

            return false;

        }

    }

    /**
     *  是否需要验证
     *
     * @param need
     *            boolean
     */

    public void setNeedAuth(boolean need) {

        System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);

        if (props == null)
            props = System.getProperties();

        if (need) {

            props.put("mail.smtp.auth", "true");

        } else {

            props.put("mail.smtp.auth", "false");

        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     */

    public void setNamePass(String name, String pass) {

        username = name;

        password = pass;

    }

    /**
     *  设置邮件的主题
     *
     * @param mailSubject
     *            String
     *
     * @return boolean
     */

    public boolean setSubject(String mailSubject) {
        System.out.println("设置邮件主题!");
            try {
                mimeMsg.setSubject(mailSubject);
            } catch (MessagingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return true;

   

       
    }

    /**
     *
     * @param mailBody
     *            String
     */

    public boolean setBody(String mailBody) {

        try {

            BodyPart bp = new MimeBodyPart();

            bp.setContent("" + mailBody, "text/html;charset=GB2312");

            mp.addBodyPart(bp);

            return true;

        }

        catch (Exception e) {

            System.err.println("设置邮件正文时发生错误!" + e);

            return false;

        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     */

    public boolean addFileAffix(String filename) {

        System.out.println("增加邮件附件:" + filename);

        try {

            BodyPart bp = new MimeBodyPart();

            FileDataSource fileds = new FileDataSource(filename);

            bp.setDataHandler(new DataHandler(fileds));

            bp.setFileName(fileds.getName());

            mp.addBodyPart(bp);

            return true;

        }

        catch (Exception e) {

            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);

            return false;

        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *           
     *     发信人的地址
     */

    public boolean setFrom(String from) {

        System.out.println("设置发信人!");

        try {

            mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人

            return true;

        }

        catch (Exception e)

        {
            return false;
        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *           
     *           
     *   收件人的地址
     */

    public boolean setTo(String to) {

        if (to == null)
            return false;

        try {

            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
                    .parse(to));

            return true;

        }

        catch (Exception e)

        {
            return false;
        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     */

    public boolean setCopyTo(String copyto)

    {

        if (copyto == null)
            return false;

        try {

            mimeMsg.setRecipients(Message.RecipientType.CC,
                    (Address[]) InternetAddress.parse(copyto));

            return true;

        }

        catch (Exception e)

        {
            return false;
        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     */

    public boolean sendout()

    {

        try {

            mimeMsg.setContent(mp);

            mimeMsg.saveChanges();

            System.out.println("正在发送邮件....");

            Session mailSession = Session.getInstance(props, null);

            Transport transport = mailSession.getTransport("smtp");

            transport.connect((String) props.get("mail.smtp.host"), username,
                    password);

            transport.sendMessage(mimeMsg, mimeMsg
                    .getRecipients(Message.RecipientType.TO));

            // transport.send(mimeMsg);

            System.out.println("发送邮件成功!");

            transport.close();

            return true;

        }

        catch (Exception e)

        {

            System.err.println("邮件发送失败!" + e);

            return false;

        }

    }

    /**
     *
     * Just do it as this
     */

    public static void main(String[] args) {
       
        //邮件的主题为字符串
        String mailbody = "" + "dear!";

        SendMail themail = new SendMail("smtp.126.com");   //发送方服务器的地址

        themail.setNeedAuth(true);

        if (themail.setSubject("标题") == false){
            return;
        }
        if (themail.setBody(mailbody) == false){
            return;
        }
        if (themail.setTo("接受邮件地址,如: test@163.com") == false){
            return;
        }
        if (themail.setFrom("发送邮件地址,如:2010@126.com") == false){
            return;
        }
        if (themail.addFileAffix("c:\\boot.ini") == false){
            return;
        }
        themail.setNamePass("发送邮件名,和上面对应应该为:2010,注意不要添加:@126.com", "密码");

        if (themail.sendout() == false)
            return;

    }

}
注意要导入javamail 所需的必要jar包

分享到:
评论

相关推荐

    利用javamail发送邮件

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和...通过阅读和理解代码,你可以学习如何在Java应用程序中利用JavaMail API发送邮件。记得在本地环境中配置正确的SMTP服务器信息,以确保邮件能够成功发送。

    利用JavaMail发邮件

    在本篇文章中,我们将深入探讨如何利用JavaMail API发送邮件,以及在实际应用中可能遇到的关键知识点。 首先,JavaMail的核心组件包括`javax.mail`和`javax.mail.internet`这两个包。`javax.mail`包含了处理邮件...

    利用JavaMail发送邮件的实例,可以直接运行

    8. **使用JavaMail发送HTML邮件**:通过设置`MimeMessage`的`setContent()`方法,可以发送包含HTML的邮件。 ```java message.setContent("<h1>HTML邮件标题</h1><p>这是HTML邮件正文。</p>", "text/html;charset=...

    利用JavaMail发送邮件示例

    这个示例将详细介绍如何在Java应用程序中使用JavaMail发送邮件。 首先,我们需要引入JavaMail相关的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>com.sun.mail</groupId> ...

    利用JavaMail发送邮件

    该程序通过JavaMail是实现邮件的发送,代码经过测试并成功,如果不能成功,请你在outlook下测试,看看你的设置是否正确。其它类包都包含在工程里面,并设置好路径了,你下载后,只要加载到Eclipse下面并修改JRE路径...

    jsp 利用 javamail发送邮件(附带java web项目文件)

    本教程将深入探讨如何在JSP(JavaServer Pages)中利用JavaMail API来实现邮件发送功能,同时提供了一个完整的Java Web项目文件供参考。 首先,要使用JavaMail,你需要在项目中引入必要的依赖。在Maven项目中,可以...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    ### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...

    javaMail 发邮件

    这个例子展示了如何使用JavaMail发送带附件的邮件。需要注意的是,实际应用中应处理各种异常,确保邮件发送的健壮性。此外,如果你的邮件服务器需要身份验证,还需要提供一个Authenticator来处理登录信息。 总的来...

    JavaMail发送邮件(文本、html、附件)

    下面将详细介绍如何利用JavaMail发送文本、HTML和包含附件的邮件,以及在实际应用中需要注意的配置步骤。 1. **JavaMail的基本概念** - JavaMail API提供了一系列接口和类,允许开发者通过SMTP(Simple Mail ...

    javamail实现邮箱与邮箱发送邮件

    标签“java发送邮件”意味着此示例主要关注Java语言中发送邮件的功能,而“javamail邮箱发送”则表明我们利用JavaMail库来实现这一功能。这个过程涉及到Java网络编程和邮件协议的理解,如SMTP(简单邮件传输协议)和...

    使用JavaMail发邮件示例录屏

    需要网讯的webex打开,讲解利用JavaMail发送邮件的开发过程。

    JavaMail 具备垃圾邮件过滤功能的邮箱

    总的来说,这个JavaMail邮箱系统是一个集成了邮件处理、用户设置和智能过滤的综合平台,通过利用JavaMail库和朴素贝叶斯算法,提供了一种高效且用户友好的邮件管理方案。开发者在设计时考虑到了用户体验和安全,使其...

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

    以上就是利用JavaMail API 实现邮件发送类的基本步骤和关键知识点。这个类提供了发送简单邮件和带附件的邮件,以及设置抄送和密送的功能,满足日常开发需求。在实际项目中,可以根据具体需求对这个类进行扩展和定制...

    使用javaMail发送邮件

    在IT行业中,发送电子邮件是一项常见的任务,特别是在自动化...通过理解并掌握上述知识点,你将能够熟练地利用JavaMail API创建自己的邮件服务。对于那些需要发送通知、报告或自动通信的项目,这是一项非常实用的技术。

    james和javamail实现邮件收发(带发送附件)

    下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...

    Android 使用javamail发送邮件

    总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...

    java使用javaMail发送邮件

    通过上述步骤,开发者可以利用JavaMail API在Java应用程序中轻松地发送邮件。记住,为了确保邮件的稳定发送,需要根据实际的邮件服务器配置调整代码,比如是否使用TLS/SSL,以及相应的端口号和认证方式。

    javamail收发邮件加密和不加密

    JavaMail 是一个强大的开源库,用于在Java应用程序中处理电子邮件。它支持多种协议,包括POP3、IMAP和SMTP,这些协议分别用于接收、检索和发送邮件。...同时,保持JavaMail库更新,以利用最新的安全修复和功能改进。

    基于Javamail的邮件收发系统

    2. **邮件协议**:Javamail支持多种邮件协议,如SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office Protocol version 3)和IMAP(Internet Message Access Protocol)用于接收邮件。在实现邮件...

Global site tag (gtag.js) - Google Analytics