java邮件开发

发送邮件依赖一个jar包  javax.mail.jar 包  用之前先把包导入http://files.cnblogs.com/files/wenjie123/javax.mail.jar.rar

package com.svse;import java.io.File;
/*
 *建立 附件类,只有文件,即附件才文件名
 */
public class AttachBean {
    private String cid;
    private File file;
    private String fileName;

    public String getCid() {
        return cid;
    }

    public void setCid(String cid) {
        this.cid = cid;
    }

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public AttachBean() {

    }

    public AttachBean(File file, String fileName) {
        super();
        this.file = file;
        this.fileName = fileName;
    }
}

package com.svse;

import java.util.ArrayList;
import java.util.List;
/**
 * 表示邮件类,你需要设置:账户名和密码、收件人、抄送(可选)、暗送(可选)、主题、内容,以及附件(可选)
 *
 * 在创建了Mail对象之后
 * 可以调用它的setSubject()、setContent(),设置主题和正文
 * 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人。
 * 也可以调用addAttch()添加附件
 * 创建AttachBean:new AttachBean(new File("..."), "fileName");
 */
public class Mail {
    private String from;//发件人
    private StringBuilder toAddress = new StringBuilder();//收件人
    private StringBuilder ccAddress = new StringBuilder();//抄送
    private StringBuilder bccAddress = new StringBuilder();//暗送

    private String subject;//主题
    private String content;//正文

    // 附件列表
    private List<AttachBean> attachList = new ArrayList<AttachBean>();

    public Mail() {}

    public Mail(String from, String to) {
        this(from, to, null, null);
    }

    public Mail(String from, String to, String subject, String content) {
        this.from = from;
        this.toAddress.append(to);
        this.subject = subject;
        this.content = content;
    }

    /**
     * 返回发件人
     * @return
     */
    public void setFrom(String from) {
        this.from = from;
    }

    /**
     * 返回发件人
     * @return
     */
    public String getFrom() {
        return from;
    }

    /**
     * 返回主题
     */
    public String getSubject() {
        return subject;
    }

    /**
     * 设置主题
     */
    public void setSubject(String subject) {
        this.subject = subject;
    }

    /**
     * 获取主题内容
     */
    public String getContent() {
        return content;
    }

    /**
     * 设置主题内容
     * @param content
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 获取收件人
     * @return
     */
    public String getToAddress() {
        return toAddress.toString();
    }

    /**
     * 获取抄送
     * @return
     */
    public String getCcAddress() {
        return ccAddress.toString();
    }

    /**
     * 获取暗送
     * @return
     */
    public String getBccAddress() {
        return bccAddress.toString();
    }

    /**
     * 添加收件人,可以是多个收件人
     * @param to
     */
    public void addToAddress(String to) {
        if(this.toAddress.length() > 0) {
            this.toAddress.append(",");
        }
        this.toAddress.append(to);
    }

    /**
     * 添加抄送人,可以是多个抄送人
     * @param cc
     */
    public void addCcAddress(String cc) {
        if(this.ccAddress.length() > 0) {
            this.ccAddress.append(",");
        }
        this.ccAddress.append(cc);
    }

    /**
     * 添加暗送人,可以是多个暗送人
     * @param bcc
     */
    public void addBccAddress(String bcc) {
        if(this.bccAddress.length() > 0) {
            this.bccAddress.append(",");
        }
        this.bccAddress.append(bcc);
    }

    /**
     * 添加附件,可以添加多个附件
     * @param attachBean
     */
    public void addAttach(AttachBean attachBean) {
        this.attachList.add(attachBean);
    }

    /**
     * 获取所有附件
     * @return
     */
    public List<AttachBean> getAttachs() {
        return this.attachList;
    }
}


package com.svse;

import java.io.IOException;
import java.util.List;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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.MimeMessage.RecipientType;

/**
 * 建立邮件工具类  发送邮件
 * @author 00
 *
 */
public class MailUtils {
    public static Session createSession(String host, final String username, final String password) {
        Properties prop = new Properties();
        prop.setProperty("mail.host", host);// 指定主机
        prop.setProperty("mail.smtp.auth", "true");// 指定验证为true

        // 创建验证器
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        };

        // 获取session对象
        return Session.getInstance(prop, auth);
    }

    /**
     * 发送指定的邮件
     *
     * @param mail
     */
    public static void send(Session session, final Mail mail) throws MessagingException,
            IOException {

        MimeMessage msg = new MimeMessage(session);// 创建邮件对象
        msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
        msg.addRecipients(RecipientType.TO, mail.getToAddress());// 设置收件人

        // 设置抄送
        String cc = mail.getCcAddress();
        if (!cc.isEmpty()) {
            msg.addRecipients(RecipientType.CC, cc);
        }

        // 设置暗送
        String bcc = mail.getBccAddress();
        if (!bcc.isEmpty()) {
            msg.addRecipients(RecipientType.BCC, bcc);
        }

        msg.setSubject(mail.getSubject());// 设置主题

        MimeMultipart parts = new MimeMultipart();// 创建部件集对象

        MimeBodyPart part = new MimeBodyPart();// 创建一个部件
        part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
        parts.addBodyPart(part);// 把部件添加到部件集中

        ///////////////////////////////////////////

        // 添加附件
        List<AttachBean> attachBeanList = mail.getAttachs();// 获取所有附件
        if (attachBeanList != null) {
            for (AttachBean attach : attachBeanList) {
                MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
                attachPart.attachFile(attach.getFile());// 设置附件文件
                attachPart.setFileName(MimeUtility.encodeText(attach
                        .getFileName()));// 设置附件文件名
                String cid = attach.getCid();
                if(cid != null) {
                    attachPart.setContentID(cid);
                }
                parts.addBodyPart(attachPart);
            }
        }

        msg.setContent(parts);// 给邮件设置内容
        Transport.send(msg);// 发邮件
    }
}    

package com.wenjie;

import java.io.IOException;
import javax.mail.MessagingException;
import javax.mail.Session;
import cn.itcast.mail.Mail;
import cn.itcast.mail.MailUtils;

public class MailTest {
    public static void main(String args[]){
        String host = "smtp.163.com";//网易163邮件传输协议     腾讯 qq的是smtp.qq.com
        /**
         * 这里需要注意一下  如果你想用qq邮箱作为发件人邮箱的话  记得把邮箱传输协议host值改为smtp.qq.com
         * 另外 username登陆名还是 一样  直接写QQ号,不用加后缀
         */
        String username = "用户名>不加后缀";//发件人邮箱的用户名 这里不要加后缀@163.com

        /**  注意事项
         * 如果是用的QQ邮箱的话  这里的password不能写QQ邮箱的登陆密码  你要去登录到QQ邮箱  点  设置>账户   下面会有一个"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"
         * 选项,把"POP3/SMTP服务"  开启来 这时候 如果你之前没开启过 那么会提示你 设置独立密码  设置完成后  password的值就写你刚才设置的独立密码即可 ,否则会验证失败
         * 如果你用的是163或者126的话 就直接写登陆密码即可
         */
        String password = "密码";  //发件人邮箱的登陆密码

        /**
         * 这里发件人 要写全名
         */
        String from = "邮箱全名";//发件人的邮箱 全名 加后缀

        /**
         * 收件人 同样要写全名
         */
        String to = "收件人的邮箱";//收件人的邮箱
        /**
         * 主题自定义
         */
        String subject = "邮件测试";//邮件主题
        /**
         * 自定义
         */
        String content = "http://http://www.cnblogs.com/wenjie123";//邮件的内容

        /**
         * 调用写好的邮件帮助类 MailUtils  直接调用createSession 根据以上(host, username, password三个参数)创建出session
         */
        Session session = MailUtils.createSession(host, username, password);
        /**
         * 创建邮件对象from, to,subject,content 这三个参数
         */
        Mail mail = new Mail(from, to,subject,content);
        try {
            /**
             * 最后一步  调用MailUtils的send方法 将session和创建好的邮件对象传进去  发送就ok了
             */
            MailUtils.send(session, mail);
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

时间: 2024-08-28 13:51:44

java邮件开发的相关文章

Java邮件开发(三):解决附件名为乱码及显示友好名称

1.附件的名称只能为英文,中文乱码 2.友好名称的显示. 我们使用163等邮箱发送邮件时,我们经常可以看到收件人一栏中会是:张益达 <[email protected]>这种方式.在上一版本的代码中并没有使用这样的方式. 下面解决这两个问题 1. 对于中文乱码,是因为邮件要求所有的字符必须是ascII字符,中文字符当然不可以.因此我们只需要把我们的中文全部转码就可以了. 而JavaMail提供了这样一个类:MimeUtility.使用这个类的encodeText方法就可以对中文进行编码. 2.

跟阿根一起学Java Web开发四:邮件发送与短信发送的实现

邮件发送与短信发送常见于用户注册认证以及系统消息提示功能模块,但实现代码过于繁琐:使用JSPGen后,深感其对邮件发送.短信发送的封装让复杂活变得简单很多. 一.基础配置 1.jspgen-config.xml 在框架基础配置文件中,找到mail节点及sms节点,按如下配置: <!-- 邮件服务 --> <mail status="true"> <smtp> <!-- 发送类型(SMTP MX) --> <type>SMTP&

Java邮件发送与屏幕截屏

前几天七夕情人节孤独寂寞的程序猿闲来没事,花了一两个小时写了个小Demo主要实现Java的Mail发送功能和桌面截屏功能. 首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识. 一.Java  SendMail邮件发送 首先让我们来看看邮件发送的原理图: JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook.foxmail功能类似) * JavaMail开发需要类库 javamail API

JavaMail 邮件开发

(api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[很多客户端工具, foxmail ] 邮件开发准备: 准备工作, 环境搭建: 1. 本地搭建一个邮件服务器 -à 易邮服务器,eyoumailserversetup.exe 2. 新建邮箱账号 张三给李四发邮件. 步骤1: 新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com 步骤

Java邮件服务学习之一:邮件服务概述

java可以提供邮件服务:一般理解的邮件服务就是可以发送和接收邮件的客户端,但是使用java编写邮件服务端: 一.邮件客户端: web应用根据依赖的API,常用的有两种: 第一种:J2EE中提供的java mail API(javax.mail.*) Javamail API是一个用于阅读.编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它支持各种因特网邮件协议,包括:SMTP.POP.IMAP.MIME.NNTP.S/MIME及其它协议. 第二种:spring 对

JavaMail邮件开发

普通邮件 JavaMail开发,先引入jar文件: activation.jar [如果使用jdk1.6或以上版本,可以不用这个jar文件] mail.jar [邮件发送核心包] 注意 注意 Java project. 如果是web项目,因为javaee自带的有邮件功能,可能存在问题! 我们要用自己的mail.jar文件功能! 需要删除javaee中mail包! /** * 1. 发送一封普通邮件 * @author */ public class App_SendMail { @Test pu

邮件开发一些基础知识

一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu.163等等他们都有自己的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. 电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个账户,用户在邮件服务器上申请了一

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

加速Java应用开发速度3——单元/集成测试+CI

大家可能对如下情景比较熟悉: 如果开发过SSH的web项目,启动服务器可能会比较慢,有的项目甚至需要1分多钟,甚至更多,这个启动时间的等待一般就浪费了: 在开发项目时,有些功能比较复杂,当时觉得思路特清晰,但是过了一段时间后,自己也忘了,完善功能时频繁出现bug,降低开发速度: 在维护项目时,不知道自己修改的对还是不对,是否存在隐患:维护速度降下来了: 如果开发一个很多人都使用的接口,典型的如用户系统,要保证比如升级时向下兼容: 在团队间协作时,有时候只定义好接口,对方还没有给实现,如何进行同步