Java Mail 邮件发送

本文介绍了一个使用Java实现的邮件发送类库,包括配置邮件主机、端口、用户名、密码等功能,以及发送带有附件的HTML邮件。

Java 发送邮件

EmailInfo.java
import java.io.File;
 
public class EmailInfo {
     
    private String mailhost;                        
    private String mailport="25";
     
    private String username;                       
    private String password;
     
    private String fromAddress;                   
    private String []toAddress;                       
     
    private boolean validate =false;               
     
    private String subject;                          
    private String content;
     
    private File attFile;                         
    private String attFilePath;
     
    public String getMailhost() {
        return mailhost;
    }
    public void setMailhost(String mailhost) {
        this.mailhost = mailhost;
    }
    public String getMailport() {
        return mailport;
    }
    public void setMailport(String mailport) {
        this.mailport = mailport;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getFromAddress() {
        return fromAddress;
    }
    public void setFromAddress(String fromAddress) {
        this.fromAddress = fromAddress;
    }
    public String[] getToAddress() {
        return toAddress;
    }
    public void setToAddress(String[] toAddress) {
        this.toAddress = toAddress;
    }
    public boolean isValidate() {
        return validate;
    }
    public void setValidate(boolean validate) {
        this.validate = validate;
    }
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public File getAttFile() {
        return attFile;
    }
    public void setAttFile(File attFile) {
        this.attFile = attFile;
    }
    public String getAttFilePath() {
        return attFilePath;
    }
    public void setAttFilePath(String attFilePath) {
        this.attFilePath = attFilePath;
    }
}

 

MyAuthenticator.java
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
 
 
public class MyAuthenticator extends Authenticator {
    private String username=null;
    private String password=null; 
     
    public MyAuthenticator() {
        // TODO Auto-generated constructor stub
    }
    public MyAuthenticator(String username, String password){
        this.username=username;
        this.password=password;
    }
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        // TODO Auto-generated method stub
        return new PasswordAuthentication(username, password);
    }
 
}

 

EmailSender.java
 
import java.util.Date;
import java.util.Properties;
 
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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 com.edu.bjfu.it.timesys.config.SystemInfo;
 
public class EmailSender {
     
    private EmailInfo emailInfo;
    private SystemInfo sysinfo;
     
    public EmailSender(){};
     
    public EmailSender(SystemInfo sysinfo, String emailContent) {
         
        this.sysinfo = sysinfo;
        emailInfo = new EmailInfo();
         
        String fromEmail = this.sysinfo.getPersonEmail();
        if (fromEmail.indexOf("163.com") != -1) {
             
            emailInfo.setMailhost("smtp.163.com");
            emailInfo.setMailport("25");
            emailInfo.setValidate(true);
        } else if (fromEmail.indexOf("qq.com") !=-1) {
             
            emailInfo.setMailhost("smtp.qq.com");
            emailInfo.setMailport("25");
            emailInfo.setValidate(true);
        }
        emailInfo.setUsername(fromEmail);
        emailInfo.setPassword(this.sysinfo.getPersonPwd());
         
      
        //File attFile=new File("D:\\mail.jar");
        //emailInfo.setAttFile(attFile);
         
        emailInfo.setFromAddress(fromEmail);
        emailInfo.setToAddress(this.sysinfo.getSupervisionEmail().split(","));
        emailInfo.setSubject("TimerSystem ");
        emailInfo.setContent(emailContent);
         
    }
    /**
     *
     * @param emailInfo
     * @return
     */
    public boolean sendHtmlEmail(){
         
        MyAuthenticator authenticator=null;
        Properties prop=getProperties(this.emailInfo);
         
        if(this.emailInfo.isValidate()){
             
            authenticator = new MyAuthenticator(this.emailInfo.getUsername(), this.emailInfo.getPassword());
        }
         
        Session session = Session.getDefaultInstance(prop, authenticator);
        try {
             
            Message message = new MimeMessage(session);
            Address fromAddress = new InternetAddress(this.emailInfo.getFromAddress());
                 
            String []toAddre=this.emailInfo.getToAddress();
                    //emailInfo.getToAddress();
            Address []toAddress = new InternetAddress[toAddre.length];
                 
                 
            for(int i=0;i<toAddre.length;i++){
            //    System.out.println("run here");
            //    System.out.println(toAddre[i]);
                toAddress[i]=new InternetAddress(toAddre[i]);
                System.out.println(toAddress[i].toString());
            }
             
            message.setFrom(fromAddress);
            message.setRecipients(Message.RecipientType.TO,toAddress);
            message.setSubject(this.emailInfo.getSubject());
            message.setSentDate(new Date());
                 
            Transport transport;
            transport=session.getTransport("smtp");
            transport.connect(this.emailInfo.getMailhost(), this.emailInfo.getUsername(), this.emailInfo.getPassword());
                 
            BodyPart mbp=new MimeBodyPart();
            Multipart multipart=new MimeMultipart();
                 
            mbp.setContent(this.emailInfo.getContent(), "text/html;charset=UTF-8");
            multipart.addBodyPart(mbp);
             
            if(this.emailInfo.getAttFile() !=null){
                mbp=new MimeBodyPart();
                DataSource source =new FileDataSource(this.emailInfo.getAttFile());
                mbp.setDataHandler(new DataHandler(source));
                mbp.setFileName(this.emailInfo.getAttFile().getName());
                multipart.addBodyPart(mbp);
                     
            }
             
            message.setContent(multipart);
            transport.sendMessage(message, toAddress);
            transport.close();
             
            return true ;
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
         
        return false;
    }
     
     
    public Properties getProperties(EmailInfo emailInfo){
        Properties prop=new Properties();
         
        prop.put("mail.smtp.host",emailInfo.getMailhost());
        prop.put("mail.smtp.port", emailInfo.getMailport());
        prop.put("mail.smtp.auth", emailInfo.isValidate()?"true":"fasle");
         
        return prop;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值