Java ve Apache Commons Email Kütüphanesi ile Gmail Hesabından E-posta Göndermek

Java ile e-posta göndermek istiyorsanız standart Java Mail API yerine onun kullanımı basitleştiren Apache Commons Email kütüphanesini kullanmak yerinde olacaktır.

Aşağıdaki bağımlılığı pom.xml’imize ekleyerek işe başlayalım:

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-email</artifactId>
   <version>1.4</version>
</dependency>

Kütüphanenin bu yazıyı okuduğunuz andaki güncel versiyonunu öğrenmek için: http://mvnrepository.com/artifact/org.apache.commons/commons-email

E-posta gönderimini gerçekleştirebileceğiniz kodumuz ise şu şekilde:

Email email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(587);
email.setSSLOnConnect(true);
email.setAuthenticator(new DefaultAuthenticator("ufukuzun.ce@gmail.com", "** Gmail parolanız **"));
email.setFrom("ufukuzun.ce@gmail.com");
email.addTo("ufuk.uzun@hotmail.com");
email.setSubject("Test Subject");
email.setMsg("Test Message");
email.send();

DefaultAuthenticator kurucusuna kendi Gmail bilgilerinizi girmelisiniz.

Örnek e-posta içeriğim düz metin (“Test Message”) olduğu için Email nesnesi olarak bir SimpleEmail sınıfı örneği kullandım. E-posta içeriğiniz HTML içerik olacaksa basitçe HtmlEmail sınıfını örneklemelisiniz.

Her şey güzel ancak çalıştırdığınızda şöyle bir hata mesajı ile karşılaşacaksınız:

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421)
 at org.apache.commons.mail.Email.send(Email.java:1448)
 at net.infoowl.common.scheduling.ScheduledTaskManagerTest.test(ScheduledTaskManagerTest.java:26)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
 at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
 at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
 at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
 at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
 at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbtex
534-5.7.14 inBS-t8nNGYqd6hMKf6cVBOPLBqvhwNeyvpBaSnnD5U64xBoaMAEouDnDbSwlDvRR-7HaH
534-5.7.14 _ORG6qnSuC0bUYJ5DWAlUvOHdpHisxskgUKehynP6t3PSEU1D-Xeb9KhmQl73I8VxS4VTY
534-5.7.14 KTJexiraUyyrcQUZuYvb9OPQTJhjCH0TyA0_AXsYs-VbiQGr6CsoyDUgsZZJnY8YghthHG
534-5.7.14 RCunU8tTpPnVDKmgy49fxypGd2gc> Please log in via your web browser and
534-5.7.14 then try again.
534-5.7.14 Learn more at
534 5.7.14 https://support.google.com/mail/answer/78754 x10sm4018220wiy.6 - gsmtp

 at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:892)
 at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:814)
 at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:728)
 at javax.mail.Service.connect(Service.java:386)
 at javax.mail.Service.connect(Service.java:245)
 at javax.mail.Service.connect(Service.java:194)
 at javax.mail.Transport.send0(Transport.java:253)
 at javax.mail.Transport.send(Transport.java:124)
 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1411)
 ... 27 more

Bunun nedeni Google’ın “Az güvenli uygulamalar”dan yetkilendirme yapılmasını engellemesi. Bu ayarı değiştirmek için şu bağlantıyı kullanabilirsiniz: https://www.google.com/settings/security/lesssecureapps

Reklamlar

Bir Yorum Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s