고객센터

    SMTP Relay 전송 - Pringo SMTP 인터페이스를 이용한 이메일 전송 - Java
    • 작성일2024/04/29 20:50
    • 조회 1,413

    Pringo SMTP 인터페이스를 이용한 SMTP Relay 이메일 전송 - Java

    다음 절차는 Java를 사용하여 Pringo SMTP Relay서버를 통해 이메일을 보내는 방법을 보여줍니다. 이 코드는 JDK 1.8이 설치된 Linux 터미널에서 바로 컴파일하고 실행할 수 있습니다.

    시작하기 전에

    Java JDK 1.8 버전이 설치된 상태여야 합니다. 다음 명령어를 사용하여 설치 상태를 확인하거나 설치할 수 있습니다.

    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
        

     

    Pringo SMTP Relay서버로 이메일 보내기

    다음 Java 코드를 사용하여 Pringo SMTP 서버로 이메일을 보낼 수 있습니다. 이 코드를 터미널에서 컴파일하고 실행할 수 있습니다.

    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    public class PringoEmailSender {
        public static void main(String[] args) {
            // SMTP 서버 정보 설정
            String host = "smtp.pringo.com";
            final String username = "your_username"; // Pringo SMTP 사용자 이름
            final String password = "your_password"; // Pringo SMTP 비밀번호
            String fromEmail = "sender@example.com";
            String toEmail = "recipient@example.com";
    
            // 프로퍼티 설정
            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", "587");
    
            // 세션 생성
            Session session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });
    
            try {
                // 이메일 메시지 설정
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(fromEmail));
                message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(toEmail));
                message.setSubject("Pringo SMTP 테스트 이메일");
                message.setContent("

    Pringo SMTP Relay 테스트 이메일

    이 이메일은 Pringo SMTP Relay  인터페이스를 사용하여 보냈습니다.

     

    import java.util.Properties;
    import java.util.Scanner;
    import java.io.IOException;
    import java.util.logging.FileHandler;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import java.util.logging.SimpleFormatter;
    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;
    
    public class SendEmail2 {
    
        private static final Logger logger = Logger.getLogger(SendEmail2.class.getName());
    
        public static void main(String[] args) {
            // 로그 파일 핸들러 설정
            try {
                FileHandler fileHandler = new FileHandler("sendmail.log", true);
                fileHandler.setFormatter(new SimpleFormatter());
                logger.addHandler(fileHandler);
            } catch (IOException e) {
                logger.log(Level.SEVERE, "Failed to set up file handler for logger", e);
            }
    
            // 사용자 입력 받기
            Scanner scanner = new Scanner(System.in);
    
            System.out.print("Enter recipient email: ");
            String toEmail = scanner.nextLine();
    
            System.out.print("Enter your email: ");
            String fromEmail = scanner.nextLine();
    
            System.out.print("Enter email subject: ");
            String subject = scanner.nextLine();
    
            System.out.print("Enter email body: ");
            String body = scanner.nextLine();
    
            String smtpHost = "127.0.0.1";  // IP 인증을 사용하는 SMTP 서버의 주소
            int smtpPort = 587;  // IP 인증을 사용하는 SMTP 서버의 포트
    
            Properties prop = new Properties();
            prop.put("mail.smtp.host", smtpHost);
            prop.put("mail.smtp.port", smtpPort);
            prop.put("mail.smtp.auth", "false");  // 인증을 사용하지 않음
            prop.put("mail.smtp.starttls.enable", "false");  // 필요에 따라 TLS를 비활성화
    
            // 디버그 모드 활성화
            Session session = Session.getInstance(prop);
            session.setDebug(true);
            session.setDebugOut(new java.io.PrintStream(System.out));
    
            try {
                logger.info("Creating a new email message...");
    
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(fromEmail));
                message.setRecipients(
                        Message.RecipientType.TO,
                        InternetAddress.parse(toEmail)
                );
                message.setSubject(subject);
                message.setText(body);
    
                logger.info("Sending email...");
    
                Transport.send(message);
    
                logger.info("Email sent successfully");
    
            } catch (MessagingException e) {
                logger.log(Level.SEVERE, "Failed to send email", e);
            }
    
            // Scanner 닫기
            scanner.close();
        }
    }
    
    

     

    코드 컴파일 및 실행

    이 코드를 SendEmail2.java 파일로 저장한 후, Javac로 빌드하여 실행가능합니다. 
    
    
    [실행 방법]
    
    1. Java Development Kit (JDK)가 설치되어 있는지 확인합니다.
    
    2. Java Home 설정이 되어 있지 않은 경우 일시적으로 유효한 JAVA_HOME설정을 합니다.
    
       export JAVA_HOME=../../jdk1.8.0_161
    
       export PATH=$JAVA_HOME/bin:$PATH
    
       java -version #java경로 설정이 완료되면 java버전이 표시됩니다. 
    
    
    3. 첨부된 Java파일을 다운받아서 IP접속이 허용된 서버에서 컴파일 후 실행합니다.
    
       #1  Java 파일 컴파일
    
       javac -cp .:../../jdk1.8.0_161/lib/javax.mail-1.6.2.jar:../../jdk1.8.0_161/lib/activation-1.1.jar SendEmail2.java
    
       #2. Java 파일 실행
    
       java -cp .:../../jdk1.8.0_161/lib/javax.mail-1.6.2.jar:../../jdk1.8.0_161/lib/activation-1.1.jar SendEmail2
    
    
    

    위 단계를 따라 Pringo SMTP 인터페이스를 통해 Java로 이메일을 전송할 수 있습니다. 추가 도움이 필요하면 Pringo 지원팀에 문의하십시오.

     

    실행 및 수신 및 전송 로그출력 화면 스크린샷