javamail技术

//【注意】把*给为自己所需的;测试前提是接受者的邮箱可以接受smtp邮件。

package com.ly.javamail;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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 java.io.*;
//这是一个javamail,用于发送邮件的程序
public class sendMail {
    
    private MimeMessage mimeMsg;  //MIME邮件对象
    
    private Session session; //邮件会话对象
    private Properties props; //系统属性
    private boolean needAuth = false;  //smtp是否需要认证
    
    private String username = "";  //smtp认证用户名和密码
    private String password = "";  
    
    private Multipart mp; //Multipart对象,邮件内容,标题、附件等内容均添加到其中后在生成Multipart对象
    
    
    public sendMail(String smtp) {
        
        setSmtpHost(smtp);
        createMimeMessage();
    }
    
    /**
     *
     * @param hostName
     */
    private void setSmtpHost(String hostName) {
        System.out.println("设置系统属性:mail.smtp.host = "+hostName);
        if(props == null){
            props = System.getProperties();  //获得系统属性对象
        }
        props.put("mail.smtp.host", hostName);  //设置SMTP主机
        
    }
    
    /**
     *
     * @return boolean
     */
    private boolean createMimeMessage() {
        try{
            System.out.println("准备获取邮件会话对象");
            session = Session.getDefaultInstance(props, null);  //获取邮件会话对象
        }catch(Exception e){
            System.out.println("获取邮件会话对象错误!" + e);
            return false;
        }
        
        System.out.println("准备创建MIME邮件对象!");
        try{
            mimeMsg = new MimeMessage(session); //创建MIME邮件对象
            mp = new MimeMultipart(); //mp 一个multipart对象
            return true;
        }catch(Exception e){
            System.out.println("创建MIME邮件对象失败!" + e);
            return false;
        }
    }
    
    /**
     *
     * @param need boolean
     */
    public void setNeedAuth(boolean need){
        System.out.println("设置smtp身份认证:mail.smtp.auth =" + need);
        if(props == null){
            props = System.getProperties();
        }
        
        if(need){
            props.put("mail.smtp.auth", "true");
        }else{
            props.put("mail.smtp.auth", "false");
        }
    }
    
    /**
     *
     * @param name String
     * @param pass String
     */
    public void setNamePass(String name,String pass){
        System.out.println("程序得到用户名和密码");
        username = name;
        password = pass;
    }
    
    /**
     *
     * @param mailSubject String
     * @return boolean
     */
    public boolean setSubject(String mailSubject){
        System.out.println("设置邮件主题!");
        try{
            mimeMsg.setSubject(mailSubject);
            return true;
        }catch(Exception e){
            System.out.println("创建邮件主题失败!" + e);
            return false;
        }
    }
    /**
     *
     * @param mailBody String
     * @return boolean
     */
    public boolean setBody(String mailBody){
        System.out.println("设置邮件主体!");
        try{
            BodyPart bp = new MimeBodyPart();
            bp.setContent("<meta http-equiv=Content-Type content=text/html;charset=gbk>"
                    + mailBody,"text/html;charset=gbk");
            mp.addBodyPart(bp);
            return true;
        }catch(Exception e){
            System.out.println("创建邮件正文发送失败!" + e);
            return false;
        }        
    }

    /**
     *
     * @param fileName String
     * @return boolean
     */
    public boolean addFileAffix(String fileName){
        System.out.println("增加邮件附件:" + fileName);
        try{
            BodyPart bp = new MimeBodyPart();
            FileDataSource files = new FileDataSource(fileName);
            bp.setDataHandler(new DataHandler(files));
            bp.setFileName(files.getName());
            
            mp.addBodyPart(bp);
            
            return true;
        }catch(Exception e){
            System.err.println("添加邮件:" + fileName +" 发生错误!"+ e);
            return false;
        }    
    }
    
    public boolean setFrom(String from){
        System.out.println("设置发件人!");
        try{
            mimeMsg.setFrom(new InternetAddress(from));   //设置发件人
            return true;
        }catch(Exception e){
            return false;
        }    
    }
    
    /**
     *
     * @param to String
     * @return boolean
     */
    public boolean setTo(String to){
        System.out.println("设置收件人!");
        if(to == null){
            return false;
        }
        try{
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));   //设置收件人
            return true;
        }catch(Exception e){
            return false;
        }
    }
    /**
     *
     * @param copyto String
     * @return boolean
     */
    public boolean setCopyTo(String copyto){
        System.out.println("发送附件到");
        if(copyto == null){
            return false;
        }
        
        try{
            mimeMsg.setRecipients(Message.RecipientType.CC, (Address[])InternetAddress.parse(copyto));   
            return true;
        }catch(Exception e){
            return false;
        }
    }
    
    public boolean sendout(){
        try{
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println("正在发送邮件...");
            
            Session mailSession = Session.getInstance(props,null);
            Transport transport = mailSession.getTransport("smtp");
            transport.connect((String)props.get("mail.smtp.host"), username,password);
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
            
            System.out.println("邮件发送成功!");
            transport.close();
            return true;
        }catch(Exception e){
            System.out.println("邮件发送失败!" + e);
            return false;
        }
    }
    



    public static void main(String[] args) {
        //发送的邮件内容
        String mailbody =
            "<meta http-equiv=Content-Type content=text/html;charset=gbk/>" +
            "<div align=center><h1 color=red>我是刘燕,我在测试javamail</h1></div>";
        
        //指明让那个smtp转发(qq)
        sendMail themail = new sendMail("smtp.qq.com");
        
        //校验身份
        themail.setNeedAuth(true);
        
        //邮件标题
        //if(themail.setSubject("测试案例") == false)    return;
        
        //将要发送的内容放入邮件体
        if(themail.setBody(mailbody) == false)    return;
        
        //发送到哪里
        if(themail.setTo("****@qq.com") == false)    return;
        
        //谁发送的
        if(themail.setFrom("****@qq.com") == false)    return;
        
        //添加附件
        //if(themail.addFileAffix("e:\\***") == false)    return;
        
        //将qq上的邮箱用户名和密码放入邮件体
        themail.setNamePass("****", "***");
        
        //发送
        if(themail.sendout() == false)    return;
    }

}

 

转载于:https://www.cnblogs.com/javaYan/archive/2012/07/31/2617118.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值