java之mail发送

简介:   一、邮箱的应用在实际的Java开发过程中,也是非常常见的。我这里就是写了一个简单的邮箱发送功能。  二、邮箱的基本配置,使用的是JavaMailSender的提供的方式来实现邮件的发送  1)qq邮箱的配置(说明一点目前qq邮箱的配置方式都是采用ssl的方式来实现的,非ssl的方式没有测试成功)package com.

  一、邮箱的应用在实际的Java开发过程中,也是非常常见的。我这里就是写了一个简单的邮箱发送功能。

  二、邮箱的基本配置,使用的是JavaMailSender的提供的方式来实现邮件的发送

  1)qq邮箱的配置(说明一点目前qq邮箱的配置方式都是采用ssl的方式来实现的,非ssl的方式没有测试成功)

package com.troy.jpa.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

import java.util.Properties;

@Configuration
public class MailConfiguration {

    @Bean
    public JavaMailSender javaMailSender() {
        //设置JavaMail的基本数据
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        //host官方查询
        javaMailSender.setHost("smtp.qq.com");
        //端口465ssl
        javaMailSender.setPort(465);
        //设置账户,密码
        javaMailSender.setUsername("409546297@qq.com");
        javaMailSender.setPassword("密码");
        //认证数据配置,ssl方式需要加入认证方式
        Properties properties = new Properties();
        properties.setProperty("mail.host", "smtp.qq.com");
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.auth", "true");
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.smtp.port", "465");
        properties.setProperty("mail.smtp.socketFactory.port", "465");
        javaMailSender.setJavaMailProperties(properties);
        return javaMailSender;
    }
}

 

  注意:这里的密码不是我们一般登录的密码,而是授权码

  2)163邮箱有2中配置方式

  a、ssl的的连接方式

package com.troy.jpa.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

import java.util.Properties;

@Configuration
public class MailConfiguration {

    @Bean
    public JavaMailSender javaMailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost("smtp.163.com");
        javaMailSender.setPort(465);
        javaMailSender.setUsername("账号");
        javaMailSender.setPassword("密码");
        Properties properties = new Properties();
        properties.setProperty("mail.host", "smtp.163.com");
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.auth", "true");
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.smtp.port", "465");
        properties.setProperty("mail.smtp.socketFactory.port", "465");
        javaMailSender.setJavaMailProperties(properties);
        return javaMailSender;
    }
}

  b、非ssl的连接方式

package com.troy.jpa.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@Configuration
public class MailConfiguration {

    @Bean
    public JavaMailSender javaMailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost("smtp.163.com");
        javaMailSender.setPort(25);
        javaMailSender.setUsername("账号");
        javaMailSender.setPassword("密码");
        return javaMailSender;
    }
}

  3)这个是采用注解的方式,自己也可以采用xml的配置方式,自己随意

  4)应用,邮件的发送

package com.troy.jpa.util;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

public class MailUtil {

    public static void main(String[] args) {
        sendMail("收件人邮箱","test","test");
    }

    public static void sendMail(String mail, String title, String text) {
        //加载容器
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-mvc.xml");
        //获取bean
        JavaMailSender javaMailSender = (JavaMailSender) context.getBean("javaMailSender");
        //建立邮箱模板
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        //设置发送人的账号
        mailMessage.setFrom("发送人账号(和登录的账号一样)");
        //设置接收人的账号
        mailMessage.setTo(mail);
        //设置主题
        mailMessage.setSubject(title);
        //设置内容
        mailMessage.setText(text);
        //发送邮件
        javaMailSender.send(mailMessage);
    }
}

 

相关文章
|
移动开发 Java
java发送post请求,使用multipart/form-data的方式传递参数
java发送post请求,使用multipart/form-data的方式传递参数
1406 0
|
6月前
|
Oracle 安全 Java
JAVA用Mail发送API的方法步骤教程
使用Java和Mail发送API实现自动化邮件发送,提高效率。步骤包括:1. 安装JDK并配置JAVA_HOME,2. 添加JavaMail库(可通过Maven或官网下载)。配置邮件发送涉及邮件服务器地址、端口和认证信息。创建邮件会话、邮件消息对象,然后使用Transport发送。示例代码展示完整流程。注意处理认证失败、连接问题和邮件发送失败等常见问题。
|
Java Apache Spring
Java发送Http请求(HttpClient)
Java发送Http请求(HttpClient)
9903 1
|
Java
java 发邮件带excel附件,以流的形式发送附件,不生成excel文件
java 发邮件带excel附件,以流的形式发送附件,不生成excel文件
902 0
|
Java API 开发工具
Java调用腾讯云短信接口,完成验证码的发送
一、前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验一下,自己实现!!!
339 0
Java调用腾讯云短信接口,完成验证码的发送
|
Java Maven
java实现发送接收邮件的功能(详细代码步骤和jar包)
可以通过java代码发送A邮箱发送到B邮箱。
369 0
java实现发送接收邮件的功能(详细代码步骤和jar包)
|
Java Linux
java 发送邮件附件 文件名过长的坑
java 发送邮件附件 文件名过长的坑
487 0
java 发送邮件附件 文件名过长的坑
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
492 0
有关Java发送邮件信息(支持附件、html文件模板发送)
|
监控 Java Linux
通过java程序发送飞鸽快信(微信)消息
通过java程序发送飞鸽快信(微信)消息
321 0
通过java程序发送飞鸽快信(微信)消息
|
Java
Java:HttpURLConnection发送GET和POST请求
Java:HttpURLConnection发送GET和POST请求
132 0