首页 > 系统相关 >Java网易163邮箱工具类-部署到Linux

Java网易163邮箱工具类-部署到Linux

时间:2024-06-21 12:32:24浏览次数:27  
标签:Java String Linux new setProperty props msg mail 163

1,设置163邮箱

开启POP3/SMTP/IMAP

2,依赖

<dependency>
	<groupId>jakarta.mail</groupId>
	<artifactId>jakarta.mail-api</artifactId>
	<version>2.1.3</version>
</dependency>
<dependency>
	<groupId>com.sun.mail</groupId>
	<artifactId>jakarta.mail</artifactId>
	<version>2.0.1</version>
</dependency>

3,MailUtil

package com.xxx.util;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailUtil {
    /**
     * 发件人邮箱
     */
    private static final String SENDER_ACCOUNT = "[email protected]";
    /**
     * 邮箱密码/授权码
     */
    private static final String AUTH_CODE = "xxxxxxxx";

    /**
     * 发送邮件
     *
     * @param direction 收件人邮箱地址
     * @param subject   邮件名称/标题
     * @param message   消息、内容
     */
    public static boolean sendMail(String direction, String subject, String message) {
        Properties props = new Properties();
        // 开启debug调试
        props.setProperty("mail.debug", "true");
        // 发送服务器需要身份验证
        props.setProperty("mail.smtp.auth", "true");
        // 设置邮件服务器主机名
        props.setProperty("mail.host", "smtp.163.com");
        // 使用SSL,端口号994
        props.setProperty("mail.smtp.port", "465");
        props.setProperty("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        try {
            // 创建有指定属性的session
            Session session = Session.getInstance(props, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(SENDER_ACCOUNT, AUTH_CODE);
                }
            });

            // 新建消息
            Message msg = new MimeMessage(session);
            msg.setSubject(subject);
            msg.setText(message);
            msg.setFrom(new InternetAddress(SENDER_ACCOUNT));
            Transport transport = session.getTransport("smtp");
            transport.connect();
            transport.sendMessage(msg, new InternetAddress[]{new InternetAddress(direction)});
            transport.close();
            return true;
        } catch (NoSuchProviderException e) {
            System.out.println("没有找到邮件服务提供者: " + e.getMessage());
        } catch (MessagingException e) {
            System.out.println("邮件发送过程中出现异常: " + e.getMessage());
            e.printStackTrace();
        }
        return false;
    }
}

4,注意

端口:
SSL加密:接收服务器(IMAP)端口号为993,发送服务器(SMTP)端口号为465。
阿里屏蔽了25端口,只能用465发送邮件,否则本地测试正常,上线阿里云服务器后失败。

标签:Java,String,Linux,new,setProperty,props,msg,mail,163
From: https://www.cnblogs.com/ritchieojo/p/18260283

相关文章

  • Scala的Trait与Java的Interface:相似性与差异性深度解析
    在面向对象编程中,接口(Interface)和特质(Trait)是实现代码复用和模块化设计的重要工具。Java和Scala作为两种流行的编程语言,它们对接口和特质有着不同的实现和理念。本文将深入探讨Scala中的Trait与Java中的Interface之间的相似性与差异性,以及它们在实际编程中的应用。1.概念......
  • java synchronized 保护线程安全
    前言工作中自己实现了一个MySessionContext类,在实现addSession方法的时候,考虑到会有线程不安全问题,这里需要使用synchronized关键字来保护线程安全。理解synchronized关键字需要了解多线程和线程安全的基本概念。在多线程环境中,多个线程可以同时访问共享资源(例如内存中的变量......
  • Linux PXE高效批量装机
    部署PXE远程安装服务在大规模的Linux应用环境中,如Web群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的USB光驱、移动硬盘等安装方法显然已经难以满足需求。本章将学习基于PXE(PrebooteXecutionEnvironm......
  • JavaScript async await 使用
    你习惯在js代码中使用asyncawait吗?我经常在js代码中写一些异步方法,使用await调用的地方,如果方便修改成异步方法,就修改成异步方法,如下所示:asyncsetPosition(graphic,lng,lat){this.lng=lng;this.lat=lat;if(graphic){letheight=awaitgetHeightByLng......
  • linux上安装MySQL的详细教程
    一、检查是否安装过mysql   rpm-qa|grepmysql(ps:输入命令没内容就是没有安装)二、安装mysql包yum-yinstallmysql57-community-release-el7-10.noarch.rpm出现下边这个就表示成功了三、安装mysql1.首先要进行的工作就是:(该命令作用就是导入MySQL官方的......
  • 计算机毕业设计项目推荐,33709基于协同过滤的旅游推荐系统的设计与实现(开题答辩+程序定
    摘 要本论文主要论述了如何使用python语言、Django框架开发一个旅游推荐系统,本系统将严格按照软件开发流程,进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析......
  • Mybatis XML文件中,对java.util.Date对象的值到转换为执行SQL进行比较所做的隐式行为分
    本次分析了mybatis的mapperXML文件,sql的where子句中使用java.util.Date进行比较进行分析。假设使用的是以下sql语句。select*fromxxxwherecreate_time>'2024-06-2020:38:38'在mybatis中,会将java.util.Date对象的值转为java.sql.Timestamp,之后在mybatis取值的时候,会调......
  • 「Java开发指南」如何使用Spring注释器实现Spring控制器?(二)
    本教程将引导您使用SpringAnnotator实现Spring控制器,标准Java类被添加到搭建项目中,SpringAnnotatorSpring启用Java类。虽然本教程的重点是Spring控制器,但是SpringAnnotator也可以用于Spring服务、组件和存储库。在本教程中,您将学习如何:创建一个Java类将类配置为Spring控制......
  • linux下安装ftp
    新建linux账号sudoadduseruser_ftpsudopasswduser_ftp--提示重复输入密码,就直接输入user_ftp安装服务yuminstall-yvsftpd--启动服务systemctlstartvsftpd--查看状态提示SUCCESS代表成功systemctlstatusvsftpd--开机自动启动systemctlenablevsftpd--防火......
  • SUSE linux的快照和恢复
    snapper用于创建和管理文件系统快照,并在需要时实现回滚,它还可以用于创建用户数据的磁盘备份。snapper使用btrfs文件系统或者精简配置的被格式化成XFS或EXT4的LVM卷。snapper可以通过命令行或YaST来进行管理。btrfs是一种copy-on-write文件系统,它原生支持subvolumes文件系统......