ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA发送Email 用于安全验证

2022-07-25 20:34:24  阅读:191  来源: 互联网

标签:JAVA 验证 properties 发送 import mail message Email 邮件


1.基于Oracle提供的mail.jar实现发送email的方式

package com.yang.email;

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

public class TestEmail {

    //设计一个方法 创建一个邮件对象
    private static Message createMessage(Session session) throws MessagingException {
        //创建一个邮件对象
        Message message = new MimeMessage(session);
        //设置邮件的基本信息
        //发送人
        message.setFrom(new InternetAddress("2280539387@qq.com"));
        //接收人   收件人TO 抄送人CC 密送、暗送 BBC
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("2280539387@qq.com"));
        //设置发送邮件的时间  默认是当前时间
        //message.setSentDate(new Date());
        //设置邮件主题
        message.setSubject("这是邮件主题");
        //设置邮件正题
        message.setText("这是邮件正文");

        //以上所有的设置需要保存才能生效
        message.saveChanges();
        return message;
    }

    public static void main(String[] args) throws MessagingException {
        //不基于spring的email
        //1.导包 Oracle 的mail的包
        //2.创建一个用于存放配置信息的对象 properties文件
        Properties properties = new Properties();
        //3.设置发送邮箱的信息
        //设置邮件发送的协议--必须
        properties.put("mail.transport.protocol","smtp");
        //设置发送邮件的主机名--必须
        properties.put("mail.smtp.host","smtp.qq.com");
        //设置发送邮件的端口 默认25 还有110 143 465等
        //properties.put("mail.smtp.port","25");
        //设置发送邮件时 是否需要进行身份验证 默认TRUE
        //properties.put("mail.smtp.auth","true");
        //设置是否使用ssl安全连接 默认使用
       // properties.put("mail.smtp.ssl.enable","true");
        //5.创建一个session对象--可以理解为是一个socket, java和邮箱之间建立一个连接
        Session session = Session.getDefaultInstance(properties);
        //6.通过session对象获取一个Transport对象(可以理解为一个输出流)
       Transport ts =  session.getTransport();
       //7.想要通过邮件发送邮件,必须得到邮件服务器的认证(该认证密码在QQ邮箱的 设置--账户--POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务--点击开启服务--需要发送一条短信进行安全验证即可得到认证码)
        ts.connect("2280539387@qq.com","hotobtfuxwgydiaf");
        //8.写一封邮件(创建一个邮件的映射关系)
       Message message =  createMessage(session);
       //9.发送邮件(方法中需要一个message对象和 接收人的信息)
        ts.sendMessage(message,message.getAllRecipients());
        //发送是流的形式 需要关闭
        ts.close();
        System.out.println("发送完毕1");
    }
}


2.基于spring的提供的spring-context-support.jar 实现的邮件发送
spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation=
               "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
               http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">

    <bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.qq.com"></property>
        <property name="username" value="2280539387@qq.com"></property>
        <property name="password" value="hotobtfuxwgydiaf"></property>
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="javaMailProperties" >
            <props>
                <prop key="mail.smtp.auth">true</prop>
            </props>
        </property>

    </bean>

</beans>

测试类

package com.yang.email;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

public class TestSpringEmail {
    public static void main(String[] args) throws MessagingException {
        //基于spring的email
        BeanFactory factory = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        JavaMailSender sender = (JavaMailSender)factory.getBean("sender");
        //利用sender创建一个邮件对象
        MimeMessage message = sender.createMimeMessage();
        //发送这个邮件
        MimeMessageHelper helper = new MimeMessageHelper(message);
        //告知helper 发给谁 发什么
        helper.setFrom("2280539387@qq.com");//发送人
        helper.setTo("2280539387@qq.com");//收件人
        helper.setSubject("主题");//邮件主题
        helper.setText("邮件正文");//邮件正文
        //发送邮件
        sender.send(message);
        System.out.println("基于spring的邮件发送完毕");
    }
}

小提示:认证码获取

标签:JAVA,验证,properties,发送,import,mail,message,Email,邮件
来源: https://www.cnblogs.com/yang2280539387/p/16518727.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有