문제

Apache Commons 이메일 라이브러리를 사용하여 이메일을 보내고 있지만 Gmail SMTP 서버를 통해 이메일을 보낼 수 없습니다.
Gmail SMTP Server 및 다른 사람과 함께 작동하는 샘플 코드를 제공 할 수 있습니까?

작동하지 않는 다음 코드를 사용하고 있습니다.

String[] recipients = {"receiver@gmail.com"};

SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setAuthentication("sender@gmail.com", "mypasswd");
email.setDebug(true);
email.setSmtpPort(465);

for (int i = 0; i < recipients.length; i++)
{
    email.addTo(recipients[i]);
}

email.setFrom("sender@gmail.com", "Me");
email.setSubject("Test message");
email.setMsg("This is a simple test of commons-email");
email.send();
도움이 되었습니까?

해결책

Gmail SMTP 서버로 이메일을 보내려면 인증 및 SSL이 필요합니다. 사용자 이름과 비밀번호는 매우 간단합니다. 인증 및 SSL을 활성화하기 위해 다음 속성이 설정되어 있는지 확인하면 작동해야합니다.

mail.smtp.auth=true
mail.smtp.starttls.enable=true

샘플 코드에 다음을 활성화 된 TLS에 추가하십시오.

APIVERIONS <1.3 사용 : 사용 :
email.setTSL(true);
이 방법은 버전> = 1.3에 대해 더 이상 사용되지 않으며 대신 사용해야합니다. email.setStartTLSEnabled(true);

다른 팁

아래에서 작동하는 코드를 아래에서 찾으십시오. 분명히, 당신은 프로젝트의 빌드 경로에 아파치 용기를 추가해야합니다.

public static void sendSimpleMail() throws Exception {
    Email email = new SimpleEmail();
    email.setSmtpPort(587);
    email.setAuthenticator(new DefaultAuthenticator("your gmail username",
            "your gmail password"));
    email.setDebug(false);
    email.setHostName("smtp.gmail.com");
    email.setFrom("me@gmail.com");
    email.setSubject("Hi");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("you@gmail.com");
    email.setTLS(true);
    email.send();
    System.out.println("Mail sent!");
}

안부, Sergiu

Commons. Email이 저를 위해 일했습니다.

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top