zoukankan      html  css  js  c++  java
  • 邮件发送 java

    package com.sun.mail;

    import java.io.File;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.Date;
    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);
    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;
    }


    }

    package com.sun.mail;

    import java.util.Date;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import javax.mail.MessagingException;

    public class testSend {

    public static void main(String[] args) throws MessagingException, IOException
    {

    Map<String,String> map= new HashMap<String,String>();
    SendMail mail = new SendMail("xxxxxxxxxx@xx.com","xxxxx");
    map.put("mail.smtp.host", "smtp.163.com");

    //暂时未成功,需要调试
    /*SendMail mail = new SendMail("14789****@sina.cn","***miya");
    map.put("mail.smtp.host", "smtp.sina.com");*/
    map.put("mail.smtp.auth", "true");
    mail.setPros(map);
    mail.initMessage();
    /*
    * 添加收件人有三种方法:
    * 1,单人添加(单人发送)调用setRecipient(str);发送String类型
    * 2,多人添加(群发)调用setRecipients(list);发送list集合类型
    * 3,多人添加(群发)调用setRecipients(sb);发送StringBuffer类型
    */
    List<String> list = new ArrayList<String>();
    list.add("282962488@qq.com");
    //list.add("***92@sina.cn");
    //list.add("austinspark@163.com");
    mail.setRecipients(list);
    /*String defaultStr = "283942930@qq.com,429353942@qq.com,2355663819@qq.com,381766286@qq.com;
    StringBuffer sb = new StringBuffer();
    sb.append(defaultStr);
    sb.append(",316121113@qq.com");
    mail.setRecipients(sb);*/
    mail.setSubject("测试邮箱");
    //mail.setText("谢谢合作");
    mail.setDate(new Date());
    mail.setFrom("MY");
    mail.setMultipart("D:HELLO.txt");
    mail.setContent("谢谢合作", "text/html; charset=UTF-8");
    /*List<String> fileList = new ArrayList<String>();
    fileList.add("D:1.jpg");
    fileList.add("D:activation.zip");
    fileList.add("D:dstz.sql");
    fileList.add("D:软件配置要求.doc");
    mail.setMultiparts(fileList);*/
    System.out.println(mail.sendMessage());
    }

    }

  • 相关阅读:
    CF Spreadsheets (数学)
    CF Theatre Square
    CF Error Correct System
    CF Playing with Paper
    HDU 3533 Escape (BFS + 预处理)
    nginx配置文件
    nginx配置文件详解
    Jenkins+maven+gitlab+shell实现项目自动化部署
    jenkins升级
    jenkins相关下载链接
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6214309.html
Copyright © 2011-2022 走看看