Java实现邮件发送

本文介绍了使用Java和Spring框架实现邮件发送的方法,包括所需的jar包、QQ邮箱的配置、授权码获取,以及如何进行简单和复杂邮件(带附件)的发送。同时,详细讲解了在Spring中添加依赖、配置文件的编写以及测试类的实现。
摘要由CSDN通过智能技术生成

邮件发送

需要的jar包:

  • activation-1.1.1.jar
  • mail-1.4.7.jar

QQ邮箱设置开启POP3/SMTP服务,并获得授权码

java实现简单邮件发送

import com.sun.mail.util.MailSSLSocketFactory;

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

public class Mail1 {
    public static  void main(String[] args) throws Exception {
        //要发送邮件,需要获得协议和支持!开启服务POP3/SMTP服务  授权码: fsxqgovorymigfeb
        Properties prop=new Properties();
        prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮件服务器
        prop.setProperty("mail.transport.protocol","smtp");//设置邮箱发送协议
        prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码

        //QQ邮箱还有设置SSL加密
        MailSSLSocketFactory sf=new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable","true");
        prop.put("mail.smtp.ssl.socketFactory",sf);

        //1.创建定义整个应用程序所需要的环境信息的Session对象
        Session session=Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("1369410772@qq.com","fsxqgovorymigfeb");
            }
        });

        //开启session的debug模式,这样就可以查看运行状态了
        session.setDebug(true);

        //2.通过session对象获得transport对象
        Transport transport = session.getTransport();

        //3.使用邮箱的用户名和授权码连上邮件服务器
        transport.connect("smtp.qq.com","1369410772@qq.com","fsxqgovorymigfeb");
        //4.创建邮件:写邮件
        MimeMessage message = new MimeMessage(session);

        message.setFrom(new InternetAddress("1369410772@qq.com"));//发件人
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("1369410772@qq.com"));//收件人
        message.setSubject("你好");//邮件主题
        message.setContent("<h1 style='color: red'>你好</h1>","text/html;charset=utf-8");//邮件内容
        //5.发送邮件
        transport.sendMessage(message,message.getAllRecipients());
        //6.关闭连接
        transport.close();

    }
}

java实现复杂邮件发送( 带文件 )

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

public class Mail1 {
    public static  void main(String[] args) throws Exception {
        //要发送邮件,需要获得协议和支持!开启服务POP3/SMTP服务  授权码: fsxqgovorymigfeb
        Properties prop=new Properties();
        prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮件服务器
        prop.setProperty("mail.transport.protocol","smtp");//设置邮箱发送协议
        prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码

        //QQ邮箱还有设置SSL加密
        MailSSLSocketFactory sf=new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable","true");
        prop.put("mail.smtp.ssl.socketFactory",sf);

        //1.创建定义整个应用程序所需要的环境信息的Session对象
        Session session=Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("1369410772@qq.com","fsxqgovorymigfeb");
            }
        });

        //开启session的debug模式,这样就可以查看运行状态了
        session.setDebug(true);

        //2.通过session对象获得transport对象
        Transport transport = session.getTransport();

        //3.使用邮箱的用户名和授权码连上邮件服务器
        transport.connect("smtp.qq.com","1369410772@qq.com","fsxqgovorymigfeb");
        //4.创建邮件:写邮件
        MimeMessage message = new MimeMessage(session);

        message.setFrom(new InternetAddress("1369410772@qq.com"));//发件人
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("1369410772@qq.com"));//收件人
        message.setSubject("你好");//邮件主题
        //message.setContent("<h1 style='color: red'>你好</h1>","text/html;charset=utf-8");//邮件内容

        //=============================================================================
        //带图片的内容
        MimeBodyPart image = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource("E:\\IDEA\\JavaWeb\\mail-java\\src\\tx.png"));//图片需要经过数据处理... DataHandler:数据处理
        image.setDataHandler(dh);//在Body中放入处理的图片数据
        image.setContentID("tx.png");//给图片设置ID

        //准备正文数据
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("这是一封邮件正文带图片<img src='cid:tx.png'>的邮件","text/html;charset=utf-8");

        //描述数据关系
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(text);
        mm.addBodyPart(image);
        mm.setSubType("mixed");

        //设置到消息中,保存修改
        message.setContent(mm);
        message.saveChanges();
        //=========================================================================

        //5.发送邮件
        transport.sendMessage(message,message.getAllRecipients());
        //6.关闭连接
        transport.close();

    }
}

Spring实现

  1. 添加依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
  2. 编写配置文件

    spring.mail.username=1369410772@qq.com
    spring.mail.password=fsxqgovorymigfeb
    spring.mail.host=smtp.qq.com
    spring.mail.properties.mail.smtp.ssl.enable=true
    
  3. 编写测试类

    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSenderImpl;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    
    @SpringBootTest
    class DemoApplicationTests {//简单邮件
    
        @Autowired
        JavaMailSenderImpl mailSender;
    
        @Test
        void contextLoads() {
            //发送邮件
            //收件人
            //内容
    
            SimpleMailMessage message = new SimpleMailMessage();
            message.setSubject("测试");
            message.setText("Hello");
            message.setFrom("1369410772@qq.com");
            message.setTo("1369410772@qq.com");
            mailSender.send(message);
    
        }
    
        @Test
        public void test2() throws Exception {//复杂邮件
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject("测试");
            helper.setText("Hello",true);
    
            //附件
            helper.addAttachment("1.jpg",new File(""));
    
            helper.setFrom("1369410772@qq.com");
            helper.setTo("1369410772@qq.com");
    
            mailSender.send(mimeMessage);
    
        }
    
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值