java---发送邮件功能

发送邮件依赖依赖一个jar包,jar包下载链接:http://download.youkuaiyun.com/detail/csdn576038874/9853411

直接看代码吧,注解已经在代码中写的很清楚了

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.winfo.ssm.entity;

import java.util.ArrayList;
import java.util.List;

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.winfo.ssm.entity;

import javax.mail.*;
import javax.mail.internet.*;
import java.io.IOException;
import java.util.List;
import java.util.Properties;

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
        prop.setProperty("mail.smtp.port","465");
        prop.setProperty("mail.smtp.socketFactory.class" , "javax.net.ssl.SSLSocketFactory");
        prop.setProperty("mail.smtp.socketFactory.port","465");
        prop.setProperty("mail.smtp.starttls.enable","true");
        prop.setProperty("mail.smtp.socketFactory.fallback" , "false");
        prop.setProperty("mail.smtp.timeout", "30000");

        // 创建验证器  
        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(Message.RecipientType.TO, mail.getToAddress());// 设置收件人
  
        // 设置抄送  
        String cc = mail.getCcAddress();  
        if (!cc.isEmpty()) {  
            msg.addRecipients(Message.RecipientType.CC, cc);
        }  
  
        // 设置暗送  
        String bcc = mail.getBccAddress();  
        if (!bcc.isEmpty()) {  
            msg.addRecipients(Message.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);// 发邮件  
    }  
}      


import com.winfo.ssm.entity.Mail;
import com.winfo.ssm.entity.MailUtils;
import javax.mail.MessagingException;
import javax.mail.Session;
import java.io.IOException;

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

//        String username = "";//发件人邮箱的用户名 这里不要加后缀@163.com
        String username = "";
          
        /**  注意事项
         * 如果是用的QQ邮箱的话  这里的password不能写QQ邮箱的登陆密码  你要去登录到QQ邮箱  点  设置>账户   下面会有一个"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务" 
         * 选项,把"POP3/SMTP服务"  开启来 会提示发送短信获取授权码,这里写获取到的授权码即可
         *
         * 使用网易的也是一样需要开启,进入设置->客户端授权密码,点击开启 设置授权密码即可
         */  
//        String password = "";  //授权码
        String password = "";


        /**
         * 这里发件人 要写全名 
         */  
//        String from = "@163.com";//发件人的邮箱 全名 加后缀
        String from = "xx@qq.com";

        /**
         * 收件人 同样要写全名 
         */  
        String to = "xx@qq.com,aa@163.com,bb@qq.com";//收件人的邮箱
        /**
         * 主题自定义 
         */  
        String subject = "邮件测试";//邮件主题  
        /**
         * 自定义 
         */  
        String content = "xxxxxxxxxxxxxxxxxxxxx";//邮件的内容
          
        /**
         * 调用写好的邮件帮助类 MailUtils  直接调用createSession 根据以上(host, username, password三个参数)创建出session 
         */  
        Session session = MailUtils.createSession(host, username, password);
        /**
         * 创建邮件对象from, to,subject,content 这四个参数
         */  
        Mail mail = new Mail();
        mail.addToAddress(to);//设置接受方邮箱,可以多个用逗号隔开
        mail.setFrom(from);//设置发送方
        mail.setSubject(subject);//设置主体
        mail.setContent(content);//设置邮件内容
//        mail.addAttach(new AttachBean());//添加附件
        mail.addCcAddress("*****@163.com");//添加抄送
        try {  
            /**
             * 最后一步  调用MailUtils的send方法 将session和创建好的邮件对象传进去  发送就ok了 
             */  
            MailUtils.send(session, mail);  
        } catch (MessagingException e) {
            e.printStackTrace();  
        } catch (IOException e) {
            e.printStackTrace();  
        }  
    }  
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值