Skip to content

java发送邮件

  1. maven坐标
xml
<!--spring-boot-starter-mail-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  1. 测试代码
java
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

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

@SpringBootTest
class SendEmailTests {
    
    @Test
    void sendEmailTest(String host, int port, String username, String password, String from, String to, String subject, String text) {
        // 配置JavaMail API的属性
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", port);
        props.put("mail.smtp.ssl.trust", host);
        
        Session session = Session.getInstance(props);
        
        try {
            // 创建邮件对象
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            message.setSubject(subject);
            String finalText = "\n------------------分割线------------------\n";
            message.setText(text + finalText);
            
            // 发送邮件
            Transport transport = session.getTransport("smtp");
            transport.connect(host, port, username, password);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
    
    @Test
    void qqEmailTest() {
        String host = "smtp.qq.com";
        int port = 587;
        String username = "sender@qq.com";
        String password = "123456"; //授权码
				String from = "sender@qq.com";
        String to = "receiver@example.com";
        String subject = "QQ"; //邮件主题
        String text = "QQ邮箱测试"; //邮件正文
        sendEmailTest(host, port, username, password, from, to, subject, text);
    }
    
    @Test
    void axigenEmailTest() {
        String host = "smtp.xclhove.top";
        int port = 25;
				String username = "xclhove@xclhove.top";
        String password = "123456"; //密码
        String from = "xclhove@xclhove.top";
        String to = "xclhove@xclhove.top";
        String subject = "Axigen"; //邮件主题
        String text = "Axigen邮箱测试"; //邮件正文
        sendEmailTest(host, port, username, password, from, to, subject, text);
    }
}
  1. 工具类
java
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * 邮件工具类
 *
 * @author xclhove
 */
public class EmailUtil {
    /**
     * 发送邮件
     *
     * @param host     主机名称或IP地址,如:smtp.qq.com
     * @param port     端口号,如:465,587,25
     * @param username 邮箱账号,如:example@qq.com
     * @param password 邮箱密码
     * @param from     发送方邮箱地址,如:example@qq.com
     * @param to       接收方邮箱地址,如:example@qq.com
     * @param subject  邮件主题
     * @param text     邮件正文
     * @throws MessagingException 异常信息
     */
    public static void sendEmail(String host, int port, String username, String password, String from, String to, String subject, String text) throws MessagingException {
        // 配置JavaMail API的属性
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.ssl.trust", host);
        
        Session session = Session.getInstance(properties);
        
        // 创建邮件对象
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
        message.setSubject(subject);
        String finalText = "\n------------------分割线------------------\n";
        message.setText(text + finalText);
        
        // 发送邮件
        Transport transport = session.getTransport("smtp");
        transport.connect(host, port, username, password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }
}

最近更新:10/11/2024, 5:01:26 AM

原文链接:java发送邮件

|下一篇:nodejs express跨域