javamail模拟邮箱功能--邮件回复-中级实战篇【邮件回复方法】(javamail API电子邮件实例)

本文介绍如何使用JavaMail API实现邮件回复功能。虽然API没有直接提供回复方法,但通过组合邮件获取和发送的功能,可以创建新邮件并回复。文章详细阐述了回复邮件的步骤,包括提取邮件信息、创建新邮件并发送。示例代码包含EmailEntity、EmailServiceEnity、SendEmailService、LookEmailService和ReplyEmailService五个类,提供了邮件发送、接收和回复的完整流程。
摘要由CSDN通过智能技术生成

引言:

  JavaMai下载地址l jar包:http://java.sun.com/products/javamail/downloads/index.html

  此篇是紧随上篇文章而封装出来的,阅读本篇章建议先阅读上一篇 –>javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)

  在上一篇中,讲解了邮件获取内容的两个方法(HTML和附件),简单介绍了邮件发送和内容获取的相同和不同之处,并且引入了新类–>javax.mail.Store:容器类。同时对SMTP和POP3协议对应的大致功能进行说明。

  本章节将来演示javamail的邮件回复功能,本来以为API会提供一个自动封装好的方法来供调用,找了好久,并网上查阅了不少资料,原来根本都没有实现回复功能,API只有一个方法:reply(Boolean)方法,来提示邮件回复时的收件人信息,但这个方法有点鸡肋,他仅在发送邮件的时候,除非你指明了回复时的邮件地址,才能回去到,并且在回复邮件时,完全可以新增收件人。

思路:

  既然API没有给我们直接回复的方法,那就发挥我们自强不息的精神吧(吼吼),那么该怎么回复一封邮件呢?

首先我们拿到要回复的邮件。(这就用到了邮件获取的方法)
提取邮件的各个部件信息。(收件人、发件人、发件时间、主题、内容等,你要在回复里面显示的都可以提取)
创建一个新邮件。(根据提出出来的信息,组装一个新邮件,如主题可以在原来上面加个:Re:标识,内容一般为:新内容+原邮件内容)
发送自己组装的邮件。(又用到了邮件的发送方法)
  看完思路总结,立马清晰了,原来邮件回复就是邮件查看和发送的合体!
  


示例结构:

  本篇示例代码分了5类(把前一章节的获取业务类进行拆分,并且新增回复业务类,其余3类没有变动)

EmailEntity 类 邮件基础父类 【前三类都和之前章节相同】
EmailServiceEnity 类 邮件服务支持类,继承邮件基础父类,并声明其他必要的私有属性(…)
SendEmailService 类 邮件发送业务类,封装邮件发送的两个方法(HTML和附件)
LookEmailService 类 邮件接收|查看业务类,拆分为邮件获取和内容查看两部分(正文阅读和附件下载)
ReplyEmailService 类 邮件回复业务类,封装邮件回复方法(获取邮件–>组装–>发送)。


实例代码演示:

  ****复制此五个类可直接跑测试****注释部分我尽可能详细讲解每个方法的作用****

EmailEntity 类

package com.cplatform.movie.back.javamail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/**
 * 邮件基础实体类
 */
public class EmailEntity extends Authenticator {
   
    /**
     * 用户名(登录邮箱)
     */
    protected static String username;
    /**
     * 密码
     */
    protected static String password;

    /**
     * 初始化邮箱地址和密码
     * @param username 邮箱
     * @param password 密码
     */
    public EmailEntity(String username, String password) {
        EmailEntity.username = "这里填写发件箱地址";
        EmailEntity.password = "这里填写发件箱密码";
    }

    /**
     * 重写自我检验方法
     */
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }

    String getPassword() {
        return password;
    }

    String getUsername() {
        return username;
    }

    public void setPassword(String password) {
        EmailEntity.password = password;
    }

    public void setUsername(String username) {
        EmailEntity.username = username;
    }
}

EmailServiceEnity 类

package com.cplatform.movie.back.javamail;

import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.cplatform.movie.back.javamail.SimpleEmailFunction.MyAuthenricator;

/**
 * 邮件服务支持类
 */
public class EmailServiceEnity extends EmailEntity{
   
    // java.util.propertis 类
    private transient Properties props;
    // 一个邮件会话
    private transient Session session;
    // 邮件消息
    private transient MimeMessage message;
    // 邮件传输对象
    private Transport transport;
    // 邮件发送内容
    private String content;
    // 邮件内容格式
    private final String CONTENT_TYPE_HTML = "text/html;charset=utf-8";
    // 端口号 
    private final static String MAIL_PORT = "25";
    // 邮箱协议常量
    public static final  String MAIL_PROTOCOL_SMTP = "smtp";
    public static final  String MAIL_PROTOCOL_POP3 = "pop3";
    // 邮箱所使用的协议
    private String mailProtocol;
    // 邮箱服务器列表
    private String hostPort;

//分//界/线/    

    /**
     * 实参构造
     * @param  mailToaddress  收件人地址,多个以逗号隔开
     * @param  content               邮件内容
     * @throws MessagingException 
     * @throws UnsupportedEncodingException 
     */
    public EmailServiceEnity(String mailToaddress, String content, String mailProtocol) throws UnsupportedEncodingException, MessagingException {
        super(username, password);
        this.setMailProtocol(mailProtocol);
        this.setHostPort(mailProtocol +"."+ username.split("@")[1]);
        this.content = content;
        this.session = this.initSession();
        this.message = this.initMessage(this.getSession(), mailToaddress);
        // 这里需要对协议进行判断,SMTP:为发送协议(初始化Transport)    POP3:则为接收协议(只能初始化Store,在接收邮件章节用到)
        if(this.getMailProtocol().equals(MAIL_PROTOCOL_SMTP)){
            this.transport = this.initTransport(this.getSession());
        }
    }

    /**
     * 初始化perps文件
     *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值