Java实现发送邮件【简易版】

背景描述

当下,信息量呈指数式增长,智能化时代大多数信息会通过手机短信、电子邮件进行发送,诸如验证码、广告、垃圾信息等。因此,作为新时代的java萌新,学会使用java发送邮件必不可缺。

问:为啥这里不介绍短信方式?
答:短信是通过三大运营商(移动、联通、电信)发送,要想使用,必须调用收费接口,收费标准与提供平台有关,个人开发者可以忽略此方式。

前提

学习编写程序发送邮件需要哪些知识?

  1. 了解邮箱的SMTP服务器地址
  2. 了解SMTP协议以及端口号

实例

下面将通过实例来进行讲解。

  • 首先,创建邮件实体类EmailInfo,主要属性包括:邮件标题、内容、发件人
// 邮件标题
private String title;
// 邮件内容
private String content;
// 收件人
private List<String> receivers = new ArrayList<String>();
  • 然后,创建邮件操作工具类EmailUtil,定义发送者SMTP服务器地址、端口、邮箱地址等信息
// 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
private static String mailserver = "smtp.163.com"; // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
private static String sender = "xxx@163.com"; // 发件人
private static int smtpPort = 25;
// smtp服务器的认证资料
private static String username = "xxx@163.com"; // 发件人邮箱账号
private static String password = "xxx"; // 发件人邮箱密码
//是否初始化
private static boolean isInited = false;
private static boolean isUse = true;
  • 接着,定义服务器认证资料信息
HtmlEmail email = new HtmlEmail();
// 通过Gmail Server 发送邮件
email.setHostName(mailserver);
email.setSmtpPort(smtpPort);
//设定smtp服务器的认证资料信息
email.setAuthentication(username, password);
email.setStartTLSEnabled(false);
email.setSSLOnConnect(false);
  • 最后,设置邮件标题、内容以及收件人信息
email.setFrom(sender); // 设定发件人
email.addTo(info.getReceivers().toArray(new String[info.getReceivers().size()])); // 设定收件人
email.setCharset("UTF-8"); // 设定内容的语言集
email.setDebug(true);
email.setSubject(info.getTitle()); // 设定主题
email.setHtmlMsg(info.getContent()); // 设定邮件内容
email.send();// 发送邮件

测试

编写测试方法

public static void main(String[] args) {
        // 邮件通知
        EmailInfo emailInfo = new EmailInfo();
        emailInfo.setTitle("dc天气");
        emailInfo.setContent("今天天气晴,18-25°C");
        emailInfo.getReceivers().add("xxx@qq.com");
        EmailUtil.sendMail(emailInfo);
    }

查看邮箱信息
在这里插入图片描述

完整程序

  • pom.xml
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.5</version>
        </dependency>
  • EmailInfo
public class EmailInfo {
    // 邮件标题
    private String title;
    // 邮件内容
    private String content;
    // 收件人
    private List<String> receivers = new ArrayList<String>();

    public EmailInfo() {}

    public EmailInfo(String title, String content, List<String> receivers) {
        this.title = title;
        this.content = content;
        this.receivers = receivers;
    }
    // get、set
}

  • EmailUtil
public class EmailUtil {
    // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
    private static String mailserver = "smtp.163.com"; // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
    private static String sender = "xxx@163.com"; // 发件人
    private static int smtpPort = 25;
    // smtp服务器的认证资料
    private static String username = "xxx@163.com"; // 发件人邮箱账号
    private static String password = "xxx"; // 发件人邮箱密码
    //是否初始化
    private static boolean isInited = false;
    private static boolean isUse = true;

    public static int sendMail(EmailInfo info) {
        if (!isInited) {
            isInited = true;
        }
        if (!isUse) {
            System.err.println("邮箱设置不启用");
            return 1;
        }
        HtmlEmail email = new HtmlEmail();
        // 通过Gmail Server 发送邮件
        email.setHostName(mailserver);
        email.setSmtpPort(smtpPort);
        //设定smtp服务器的认证资料信息
        email.setAuthentication(username, password);
        email.setStartTLSEnabled(false);
        email.setSSLOnConnect(false);
        try {
            email.setFrom(sender); // 设定发件人
            email.addTo(info.getReceivers().toArray(new String[info.getReceivers().size()])); // 设定收件人
            email.setCharset("UTF-8"); // 设定内容的语言集
            email.setDebug(true);
            email.setSubject(info.getTitle()); // 设定主题
            email.setHtmlMsg(info.getContent()); // 设定邮件内容
            email.send();// 发送邮件

        } catch (EmailException e) {
            e.printStackTrace();
            return 1;
        }
        return 0;
    }
}

总结

看到这里,通过java实现发送邮件就完成了,读者们可以结合本人的前面的一个简易爬虫博客编写天气的推送程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值