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();

        }

    }

}
复制代码

你可能感兴趣的:(java)