>  기사  >  Java  >  Java를 기반으로 간단한 대량 이메일 기능을 구현하는 방법은 무엇입니까?

Java를 기반으로 간단한 대량 이메일 기능을 구현하는 방법은 무엇입니까?

王林
王林앞으로
2023-04-20 16:28:081930검색

pom 파일에는 타사 종속성이 도입됩니다.

		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4</version>
		</dependency>
		<!--lombok-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

Java 코드는 다음과 같습니다

 import lombok.Data;
 
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
 
/**
 * Created by tarzan liu on 2021/5/9.
 */
public abstract class EmailUtil {
 
    private static final Session session;
 
    private static final EmailAuthenticator authenticator;
 
    static {
        InputStream inputStream = null;
        try {
            inputStream = EmailUtil.class.getResourceAsStream("/email.properties");
            Properties properties = new Properties();
            properties.load(inputStream);
 
            authenticator = new EmailAuthenticator();
            String username = properties.getProperty("email.username");
            authenticator.setUsername(username);
 
            String password = properties.getProperty("email.password");
            authenticator.setPassword(password);
 
            String smtpHostName = "smtp." + username.split("@")[1];
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.host", smtpHostName);
 
            session = Session.getInstance(properties, authenticator);
        } catch (Exception e) {
            throw new RuntimeException("init error.");
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
 
    private EmailUtil() { }
 
    /**
     * 群发邮件方法
     */
    private static void massSend(List<String> recipients, SimpleEmail email) throws MessagingException {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(authenticator.getUsername()));
        InternetAddress[] addresses = new InternetAddress[recipients.size()];
        for (int index = 0; index < recipients.size(); index ++) {
            addresses[index] = new InternetAddress(recipients.get(index));
        }
        message.setRecipients(RecipientType.TO, addresses);
        message.setSubject(email.getSubject());
        message.setContent(email.getContent(), "text/html;charset=utf-8");
 
        Transport.send(message);
    }
 
    /**
     * 发送邮件
     */
    public static void send(String recipient, SimpleEmail email) throws MessagingException {
        List<String> recipients = new ArrayList<>();
        recipients.add(recipient);
        massSend(recipients, email);
    }
 
 
    //可以单独建一个类
    @Data
    public static class SimpleEmail {
        private String subject;
        private String content;
    }
 
 
    public static void main(String[] args) throws Exception {
        SimpleEmail simpleEmail = new SimpleEmail();
        simpleEmail.setSubject("今天你学习了么?");
        simpleEmail.setContent("今天你写博客了么");
        send("1334512682@qq.com", simpleEmail);
    }
}

email.properties 시스템 이메일 구성

email.username=###@163.com
email.password=###

Your email 계정 및 비밀번호의 경우 구성 파일을 생략하고 코드에 직접 계정 및 비밀번호를 작성할 수도 있습니다.

테스트 실행

실행을 마우스 오른쪽 버튼으로 클릭하여 기본 메서드를 실행합니다.

Java를 기반으로 간단한 대량 이메일 기능을 구현하는 방법은 무엇입니까?

Java를 기반으로 간단한 대량 이메일 기능을 구현하는 방법은 무엇입니까?

보내는 이메일 주소를 WeChat에 바인딩하고 WeChat 알림 기능을 실현하세요!

Java를 기반으로 간단한 대량 이메일 기능을 구현하는 방법은 무엇입니까?

위 내용은 Java를 기반으로 간단한 대량 이메일 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제