当前位置: 代码迷 >> Java相关 >> java->>发送邮件
  详细解决方案

java->>发送邮件

热度:69   发布时间:2016-04-22 19:56:55.0
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();        }    }}

 



 

  相关解决方案