【JPress】Email

2021SC@SDUSC

目录

一、Email

二、Sender

1.EmailSender

2.SimpleEmailSender


一、Email

Email是JPress中邮件的实体类,Email是JPress中的—种的通信方式。Email可以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并轻松实现轻松的信息搜索。

Email类的属性如下:

private String[] to = null;
private String[] cc = null;
private String subject = null;
private String content = null;

分别是收件人、抄送、主题、内容。其主要send方法如下:

public void send(EmailSender sender) {
    try {
        sender.send(this);
    } catch (Throwable ex) {
        LOG.error(ex.toString(), ex);
    }
}

很明显,参数是一个EmailSender对象,它会使用sender的send方法来发送,有点适配器模式的影子。所以一个邮件的发送过程,主要还是由sender来决定,接下来我们来研究一下sender。

二、Sender

1.EmailSender

EmailSender是实现send方法的接口。如果一个发送器想要拥有发送邮件的功能,就要实现这个接口。send方法会接受一封邮件,并返回发送结束后的状态。

public boolean send(Email email);

在JPress中,EmailSender有两个实现类,他们分别是SimpleEmailSender和AliyunEmailSender。其UML类图如下:

 

2.SimpleEmailSender

SimpleEmailSender是JPress中实现了网络应用层中邮件发送核心功能的类。其属性如下:

private String host;
private String name;
private String password;
private boolean useSSL = true;
private boolean enable = false;

分别是主机ip地址、用户名、密码、是否使用SSL证书、邮箱是否可用。在类的默认构造器中,它就从JPressConsts中获取、注入了这些系统常量。

系统消息的创建一般也是由SimpleEmailSender来创建的,使用其createMessage方法。在创建消息的过程中,系统会记录一些参数并保存至message的session中。

系统发送Email的方法如下:

public boolean send(Email email) {
    if (enable == false) {
        //do nothing
        return false;
    }
​
    Message message = createMessage();
    try {
        message.setSubject(email.getSubject());
        message.setContent(email.getContent(), "text/html;charset=utf-8");
​
        message.setRecipients(Message.RecipientType.TO, toAddress(email.getTo()));
        message.setRecipients(Message.RecipientType.CC, toAddress(email.getCc()));
​
        Transport.send(message);
​
        return true;
    } catch (MessagingException e) {
        logger.error("SimpleEmailSender send error", e);
    }
​
    return false;
}

可以发现,如果系统此时的JPressConsts.OPTION_CONNECTION_EMAIL_ENABLE是false,那么将无法发送,这是合理的。如果是可使用邮箱,那么系统将会把Email打包成message,再使用Transport.send把message传输出去,自此,完成Email的发送。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值