java邮件

来源:互联网 发布:傲剑紫霞神功数据 编辑:程序博客网 时间:2024/05/22 11:42

恶魔之java邮件–简单易操作

配置

  • pom.xml配置
<dependency>        <groupId>org.apache.commons</groupId>        <artifactId>commons-email</artifactId>        <version>1.4</version>    </dependency>

代码示例

  • SendMail .java
package aaa;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Address;import javax.mail.Authenticator;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;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;public class SendMail {    private String username = null;    private String password = null;    private Authenticator auth = null;    private MimeMessage mimeMessage =null;    private Properties pros = null;    private Multipart multipart = null;    private BodyPart bodypart= null;    /**     * 初始化账号密码并验证     * 创建MimeMessage对象     * 发送邮件必须的步骤:1     * @param username     * @param password     */    public SendMail(String username,String password){        this.username = username;        this.password = password;    }     /**     * 初始化MimeMessage对象     * 发送邮件必须的步骤:3     */    public void initMessage(){        this.auth = new Email_Autherticator();        Session session = Session.getDefaultInstance(pros,auth);        session.setDebug(true); //设置获取 debug 信息        mimeMessage = new MimeMessage(session);    }    /**     * 设置email系统参数     * 接收一个map集合key为string类型,值为String     * 发送邮件必须的步骤:2     * @param map     */    public void setPros(Map<String,String> map){        pros = new Properties();        for(Map.Entry<String,String> entry:map.entrySet()){            pros.setProperty(entry.getKey(), entry.getValue());        }    }    /**     * 验证账号密码     * 发送邮件必须的步骤     * @author Administrator     *     */    public class Email_Autherticator extends Authenticator    {        public PasswordAuthentication getPasswordAuthentication()        {            return new PasswordAuthentication(username, password);        }    }    /**     * 设置发送邮件的基本参数(去除繁琐的邮件设置)     * @param sub 设置邮件主题     * @param text 设置邮件文本内容     * @param rec 设置邮件接收人     * @throws MessagingException     * @throws UnsupportedEncodingException     */    public void setDefaultMessagePros(String sub,String text,String rec) throws MessagingException, UnsupportedEncodingException{        mimeMessage.setSubject(sub);        mimeMessage.setText(text);        mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(rec));        mimeMessage.setSentDate(new Date());        mimeMessage.setFrom(new InternetAddress(username,username));    }    /**     * 设置主题     * @param subject     * @throws MessagingException      */    public void  setSubject(String subject) throws MessagingException{        mimeMessage.setSubject(subject);    }    /**     * 设置日期     * @param date     * @throws MessagingException      */    public void  setDate(Date date) throws MessagingException{        mimeMessage.setSentDate(new Date());    }    /**     * 设置邮件文本内容     * @param text     * @throws MessagingException     */    public void setText(String text) throws MessagingException{        mimeMessage.setText(text);    }    /**     * 设置邮件头部     * @param arg0     * @param arg1     * @throws MessagingException     */    public void setHeader(String arg0,String arg1) throws MessagingException{        mimeMessage.setHeader(arg0, arg1);    }    /**     * 设置邮件接收人地址 <单人发送>     * @param recipient     * @throws MessagingException     */    public void setRecipient(String recipient) throws MessagingException{        mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));    }    /**     * 设置邮件接收人地址 <多人发送>     * @param list     * @throws MessagingException      * @throws AddressException      */    public String setRecipients(List<String> recs) throws AddressException, MessagingException{        if(recs.isEmpty()){            return "接收人地址为空!";        }        for(String str:recs){            mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(str));        }        return "加入接收人地址成功!";    }    /**     * 设置邮件接收人地址 <多人发送>     * @param StringBuffer<parms,parms2,parms.....>     * @throws MessagingException      * @throws AddressException      */    @SuppressWarnings("static-access")    public String setRecipients(StringBuffer sb) throws AddressException, MessagingException{        if(sb==null||"".equals(sb)){            return "字符串数据为空!";        }        Address []address = new InternetAddress().parse(sb.toString());        mimeMessage.addRecipients(Message.RecipientType.TO, address);        return "收件人加入成功";    }    /**     * 设置邮件发送人的名字     * @param from     * @throws UnsupportedEncodingException     * @throws MessagingException     */    public void setFrom(String from) throws UnsupportedEncodingException, MessagingException{        mimeMessage.setFrom(new InternetAddress(username,from));    }    /**     * 发送邮件<单人发送>     * return 是否发送成功     * @throws MessagingException      */    public String sendMessage() throws MessagingException{        Transport.send(mimeMessage);        return "success";    }    /**     * 设置附件     * @param file 发送文件的路径     */    public void setMultipart(String file) throws MessagingException, IOException{        if(multipart==null){            multipart = new MimeMultipart();        }        multipart.addBodyPart(writeFiles(file));        mimeMessage.setContent(multipart);    }    /**     * 设置附件<添加多附件>     * @param fileList<接收List集合>     * @throws MessagingException     * @throws IOException     */    public void setMultiparts(List<String> fileList) throws MessagingException, IOException{        if(multipart==null){            multipart = new MimeMultipart();        }        for(String s:fileList){            multipart.addBodyPart(writeFiles(s));                }                      mimeMessage.setContent(multipart);    }    /**     * 发送文本内容,设置编码方式     * <方法与发送附件配套使用>     * <发送普通的文本内容请使用setText()方法>     * @param s     * @param type     * @throws MessagingException     */    public void setContent(String s,String type) throws MessagingException{        if(multipart==null){            multipart = new MimeMultipart();        }        bodypart = new MimeBodyPart();        bodypart.setContent(s, type);        multipart.addBodyPart(bodypart);        mimeMessage.setContent(multipart);        mimeMessage.saveChanges();    }    /**     * 读取附件     * @param filePath     * @return     * @throws IOException     * @throws MessagingException     */    public BodyPart writeFiles(String filePath)throws IOException, MessagingException{        File file = new File(filePath);        if(!file.exists()){            throw new IOException("文件不存在!请确定文件路径是否正确");        }        bodypart = new MimeBodyPart();        DataSource dataSource = new FileDataSource(file);        bodypart.setDataHandler(new DataHandler(dataSource));        //文件名要加入编码,不然出现乱码        bodypart.setFileName(MimeUtility.encodeText(file.getName()));        return bodypart;    }    /*qq用户发送邮件*/    public static void SendQQEmail(List<String> list,List<String> fileList,String subject,String content) throws Exception{        Map<String,String> map= new HashMap<String,String>();        SendEmail mail = new SendEmail("username", "password");        map.put("mail.smtp.host", "smtp.qq.com");        map.put("mail.smtp.auth", "true");        map.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");        map.put("mail.smtp.port", "465");        map.put("mail.smtp.socketFactory.port", "465");        mail.setPros(map);        mail.initMessage();        mail.setRecipients(list);        mail.setSubject(subject);        mail.setDate(new Date());        mail.setFrom("验证邮件发送");        mail.setContent(content, "text/html; charset=UTF-8");        System.out.println(mail.sendMessage());    }    /*新浪用户发送邮件*/    public static void SendSinaEmail(List<String> list,List<String> fileList,String subject,String content) throws Exception{        Map<String,String> map= new HashMap<String,String>();        SendEmail mail = new SendEmail("username", "password");        map.put("mail.smtp.host","smtp.sina.com");//存储发送邮件服务器的信息        map.put("mail.smtp.auth", "true");        map.put("mail.smtp.socketFactory.class", "javax.net.SocketFactory");        map.put("mail.smtp.port", "25");        map.put("mail.smtp.socketFactory.port", "25");        mail.setPros(map);        mail.initMessage();        mail.setRecipients(list);        mail.setSubject(subject);        mail.setDate(new Date());        mail.setFrom("验证邮件发送");        mail.setContent(content, "text/html; charset=UTF-8");        System.out.println(mail.sendMessage());    }    /*阿里云用户发送邮件*/    public static void SendAliyunEmail(List<String> list,List<String> fileList,String subject,String content) throws Exception{        Map<String,String> map= new HashMap<String,String>();        SendEmail mail = new SendEmail("username","password");        map.put("mail.smtp.host", "smtp.owlbest.com");        map.put("mail.smtp.auth", "true");        map.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");        map.put("mail.smtp.port", "465");        map.put("mail.smtp.socketFactory.port", "465");        mail.setPros(map);        mail.initMessage();        mail.setRecipients(list);        mail.setSubject(subject);        mail.setDate(new Date());        mail.setFrom("xxxxxx");        mail.setContent(content, "text/html; charset=UTF-8");        System.out.println(mail.sendMessage());    }   public static void main(String[] args) throws Exception {        List<String> list = new ArrayList<String>();        list.add("xxx@qq.com");        list.add("xxx@qq.com");        SendSinaEmail(list , null, "邮件发送成功了嘛", "发送失败了");    }}class Email_Authenticator extends Authenticator {    String userName = null;    String password = null;    public Email_Authenticator() {    }    public Email_Authenticator(String username, String password) {        this.userName = username;        this.password = password;    }    protected PasswordAuthentication getPasswordAuthentication() {        return new PasswordAuthentication(userName, password);    }}
原创粉丝点击