「java发送邮件的工具类」java收发邮件

博主:adminadmin 2022-11-27 03:18:06 47

本篇文章给大家谈谈java发送邮件的工具类,以及java收发邮件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java工具类发送邮件需要传入哪些信息

用java工具类发送邮件需要传入的信息有:

1、首先明确他是根据java自带的对象和方法开发出来的工具

2、可以用来查询java相关的独享和方法

3、有点是方便使用和查询

4、java常用的工具类例如有Object类、Character类、String类等

java 发送邮件 需要哪些jar包

使用JavaMail发送邮件需要用到mail.jar和activtion.jar两个包。

该类实现了较完整的邮件发送功能,包括以HTML格式发送,添加附件和抄送人。下面是具体的代码:

package cn.cgw.util.mail;  

  

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;  

  

  

public class Mail {   

  

    private MimeMessage mimeMsg; //MIME邮件对象   

    private Session session; //邮件会话对象   

    private Properties props; //系统属性   

    private boolean needAuth = false; //smtp是否需要认证   

    //smtp认证用户名和密码   

    private String username;   

    private String password;   

    private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象   

       

    /** 

     * Constructor 

     * @param smtp 邮件发送服务器 

     */  

    public Mail(String smtp){   

        setSmtpHost(smtp);   

        createMimeMessage();   

    }   

  

    /** 

     * 设置邮件发送服务器 

     * @param hostName String  

     */  

    public void setSmtpHost(String hostName) {   

        System.out.println("设置系统属性:mail.smtp.host = "+hostName);   

        if(props == null)  

            props = System.getProperties(); //获得系统属性对象    

        props.put("mail.smtp.host",hostName); //设置SMTP主机   

    }   

  

  

    /** 

     * 创建MIME邮件对象   

     * @return 

     */  

    public boolean createMimeMessage()   

    {   

        try {   

            System.out.println("准备获取邮件会话对象!");   

            session = Session.getDefaultInstance(props,null); //获得邮件会话对象   

        }   

        catch(Exception e){   

            System.err.println("获取邮件会话对象时发生错误!"+e);   

            return false;   

        }   

      

        System.out.println("准备创建MIME邮件对象!");   

        try {   

            mimeMsg = new MimeMessage(session); //创建MIME邮件对象   

            mp = new MimeMultipart();   

          

            return true;   

        } catch(Exception e){   

            System.err.println("创建MIME邮件对象失败!"+e);   

            return false;   

        }   

    }     

      

    /** 

     * 设置SMTP是否需要验证 

     * @param need 

     */  

    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 

     * @param pass 

     */  

    public void setNamePass(String name,String pass) {   

        username = name;   

        password = pass;   

    }   

  

    /** 

     * 设置邮件主题 

     * @param mailSubject 

     * @return 

     */  

    public boolean setSubject(String mailSubject) {   

        System.out.println("设置邮件主题!");   

        try{   

            mimeMsg.setSubject(mailSubject);   

            return true;   

        }   

        catch(Exception e) {   

            System.err.println("设置邮件主题发生错误!");   

            return false;   

        }   

    }  

      

    /**  

     * 设置邮件正文 

     * @param mailBody String  

     */   

    public boolean setBody(String mailBody) {   

        try{   

            BodyPart bp = new MimeBodyPart();   

            bp.setContent(""+mailBody,"text/html;charset=GBK");   

            mp.addBodyPart(bp);   

          

            return true;   

        } catch(Exception e){   

        System.err.println("设置邮件正文时发生错误!"+e);   

        return false;   

        }   

    }   

    /**  

     * 添加附件 

     * @param filename String  

     */   

    public boolean addFileAffix(String filename) {   

      

        System.out.println("增加邮件附件:"+filename);   

        try{   

            BodyPart bp = new MimeBodyPart();   

            FileDataSource fileds = new FileDataSource(filename);   

            bp.setDataHandler(new DataHandler(fileds));   

            bp.setFileName(fileds.getName());   

              

            mp.addBodyPart(bp);   

              

            return true;   

        } catch(Exception e){   

            System.err.println("增加邮件附件:"+filename+"发生错误!"+e);   

            return false;   

        }   

    }   

      

    /**  

     * 设置发信人 

     * @param from String  

     */   

    public boolean setFrom(String from) {   

        System.out.println("设置发信人!");   

        try{   

            mimeMsg.setFrom(new InternetAddress(from)); //设置发信人   

            return true;   

        } catch(Exception e) {   

            return false;   

        }   

    }   

    /**  

     * 设置收信人 

     * @param to String  

     */   

    public boolean setTo(String to){   

        if(to == null)return false;   

        try{   

            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));   

            return true;   

        } catch(Exception e) {   

            return false;   

        }     

    }   

      

    /**  

     * 设置抄送人 

     * @param copyto String   

     */   

    public boolean setCopyTo(String copyto)   

    {   

        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));   

            transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));   

            //transport.send(mimeMsg);   

              

            System.out.println("发送邮件成功!");   

            transport.close();   

              

            return true;   

        } catch(Exception e) {   

            System.err.println("邮件发送失败!"+e);   

            return false;   

        }   

    }   

  

    /** 

     * 调用sendOut方法完成邮件发送 

     * @param smtp 

     * @param from 

     * @param to 

     * @param subject 

     * @param content 

     * @param username 

     * @param password 

     * @return boolean 

     */  

    public static boolean send(String smtp,String from,String to,String subject,String content,String username,String password) {  

        Mail theMail = new Mail(smtp);  

        theMail.setNeedAuth(true); //需要验证  

          

        if(!theMail.setSubject(subject)) return false;  

        if(!theMail.setBody(content)) return false;  

        if(!theMail.setTo(to)) return false;  

        if(!theMail.setFrom(from)) return false;  

        theMail.setNamePass(username,password);  

          

        if(!theMail.sendOut()) return false;  

        return true;  

    }  

      

    /** 

     * 调用sendOut方法完成邮件发送,带抄送 

     * @param smtp 

     * @param from 

     * @param to 

     * @param copyto 

     * @param subject 

     * @param content 

     * @param username 

     * @param password 

     * @return boolean 

     */  

    public static boolean sendAndCc(String smtp,String from,String to,String copyto,String subject,String content,String username,String password) {  

        Mail theMail = new Mail(smtp);  

        theMail.setNeedAuth(true); //需要验证  

          

        if(!theMail.setSubject(subject)) return false;  

        if(!theMail.setBody(content)) return false;  

        if(!theMail.setTo(to)) return false;  

        if(!theMail.setCopyTo(copyto)) return false;  

        if(!theMail.setFrom(from)) return false;  

        theMail.setNamePass(username,password);  

          

        if(!theMail.sendOut()) return false;  

        return true;  

    }  

      

    /** 

     * 调用sendOut方法完成邮件发送,带附件 

     * @param smtp 

     * @param from 

     * @param to 

     * @param subject 

     * @param content 

     * @param username 

     * @param password 

     * @param filename 附件路径 

     * @return 

     */  

    public static boolean send(String smtp,String from,String to,String subject,String content,String username,String password,String filename) {  

        Mail theMail = new Mail(smtp);  

        theMail.setNeedAuth(true); //需要验证  

          

        if(!theMail.setSubject(subject)) return false;  

        if(!theMail.setBody(content)) return false;  

        if(!theMail.addFileAffix(filename)) return false;   

        if(!theMail.setTo(to)) return false;  

        if(!theMail.setFrom(from)) return false;  

        theMail.setNamePass(username,password);  

          

        if(!theMail.sendOut()) return false;  

        return true;  

    }  

      

    /** 

     * 调用sendOut方法完成邮件发送,带附件和抄送 

     * @param smtp 

     * @param from 

     * @param to 

     * @param copyto 

     * @param subject 

     * @param content 

     * @param username 

     * @param password 

     * @param filename 

     * @return 

     */  

    public static boolean sendAndCc(String smtp,String from,String to,String copyto,String subject,String content,String username,String password,String filename) {  

        Mail theMail = new Mail(smtp);  

        theMail.setNeedAuth(true); //需要验证  

          

        if(!theMail.setSubject(subject)) return false;  

        if(!theMail.setBody(content)) return false;  

        if(!theMail.addFileAffix(filename)) return false;   

        if(!theMail.setTo(to)) return false;  

        if(!theMail.setCopyTo(copyto)) return false;  

        if(!theMail.setFrom(from)) return false;  

        theMail.setNamePass(username,password);  

          

        if(!theMail.sendOut()) return false;  

        return true;  

    }  

      

}

Java发送邮件

JAVA邮件发送的大致过程是这样的的:

1、构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。

2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。

3、通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。

4、构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。

5、使用javax.mail.Transport工具类发送邮件。

java中如何实现公司邮箱发送邮件配置

Java中可以通过Javamail API实现公司邮箱邮件发送配置,Java mail是利用现有的邮箱账户发送邮件的工具,具体步骤如如下:

1、通过JavamailAPI设置发送者邮箱用户名及密码

2、通过JavamailAPI设置邮件主题、邮件内容、附件及邮件发送时间

3、通过JavamailAPI设置发送者邮箱地址及接收者邮箱地址,接收者地址可以是多个及抄送

4、邮件的需基本元素都设置完毕后,即可通过Javamail API的发送接口执行发送操作。

Java收发邮件过程中具体的功能是怎么实现的

1.SMTP协议

用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。

因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)

2.POP3协议

同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。

因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)

下图用于演示两帐户相互发送邮件的过程

3.1JavaMail API按其功能划分通常可分为如下三大类:

创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。

3.2发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。

接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。

3.3Session类

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。

4.邮件组织结构相关的API

MimeMessage类表示整封邮件。

MimeBodyPart类表示邮件的一个MIME消息。

MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。

5.具体的例子程序

package cn.edu.dlmu.send;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

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 javax.mail.internet.MimeUtility;

public class SendMail {

public static void main(String[] args) throws Exception {

Properties prop = new Properties();

//连接的邮件服务器的主机名

prop.setProperty("mail.smtp.host", "smtp.sina.com.cn");

//发送邮件的协议

prop.setProperty("mail.transport.protocol", "smtp");

//是否向邮件服务器提交认证

prop.setProperty("mail.smtp.auth", "true");

//创建session

Session session = Session.getInstance(prop);

session.setDebug(true);

//得到transport

Transport ts = session.getTransport();

//连接邮件服务器

ts.connect("smtp.sina.com.cn", "xxxx@sina.com", "xxxxx");

//发送邮件

MimeMessage message = createMessage(session);

ts.sendMessage(message, message.getAllRecipients());

ts.close();

}

public static MimeMessage createMessage(Session session) throws Exception {

MimeMessage message = new MimeMessage(session);

//设置邮件的基本信息

message.setFrom(new InternetAddress("xxxx@sina.com"));

message.setRecipient(Message.RecipientType.TO, new InternetAddress("1219070362@qq.com"));

message.setSubject("test");

//正文

MimeBodyPart text = new MimeBodyPart();

//设置charaset可以解决中文正文的乱码问题,内嵌可下载的图片

text.setContent("你好xxx,img src='c:/dog.jpg' /测试成功!br/img src='cid:aaa.jpg' /", "text/html;charset=gbk");

//图片1

MimeBodyPart image = new MimeBodyPart();

image.setDataHandler(new DataHandler(new FileDataSource("src/88.jpg")));

image.setContentID("aaa.jpg");

//附件

MimeBodyPart attach = new MimeBodyPart();

DataHandler dh = new DataHandler(new FileDataSource("src/javamail架包.jar"));

attach.setDataHandler(dh);

//解决文件中文乱码问题

attach.setFileName(MimeUtility.encodeText(dh.getName()));

//描述正文和图片的关系

MimeMultipart mp = new MimeMultipart();

mp.addBodyPart(text);

mp.addBodyPart(image);

mp.setSubType("related");

//描述正文和附件

MimeMultipart mp2 = new MimeMultipart();

mp2.addBodyPart(attach);

//将正文封装为一个body

MimeBodyPart content = new MimeBodyPart();

content.setContent(mp);

mp2.addBodyPart(content);

mp2.setSubType("mixed");

message.setContent(mp2);

message.saveChanges();

return message;

}

}

java发送邮件的工具类的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java收发邮件、java发送邮件的工具类的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。