JSF

JSF Dersleri-Mail Gönderme

Merhaba arkadaşlar. Bu yazıda JSF ile nasıl mail gönderilebileceği konusuna değineceğiz.

Aşağıda yer alan örnek uygulamamızda KOD5’i ziyaret etmiş birisinden görüşünü, ismini, soy isimini ve mail adresini alacağız. Akabinde alınan görüşü bir mail adresine göndereceğiz.

Ben bu uygulama için kendi GMail hesabımı kullandım ama normalde bu tarz işler için GMail gibi değil site üzerine kayıtlı e-posta hesapları kullanılır. Ayrıca Google GMail için kendisinin dışında bir oturum açma işlemini tamamen kısıtladığı için sizin gidip GMail hesabınızın ayarlarından bu kısıtlamayı kaldırmanız gerekir. Aksi takdirde uygulamayı çalıştırınca bağlantı reddedildi hatası alırsınız. Ama bu tavsiye edilen bir şey değil çünkü kısıtlamayı kaldırdığınızda hesabınız saldırılara açık hale gelir.

Java ile mail göndermek için Oracle’ın sitesinden JavaMail API dosyasını indirmemiz gerekiyor. İndirme işlemi için buraya tıklayabilirsiniz. Akabinde indirdiğiniz .zip dosyasını klasöre çıkartın ve içinden mail.jar dosyasını projenize ekleyin. Şimdi uygulamamızın kaynak kodlarına bakalım.

index.xhtml Kodu

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>JSF Mail Gönderme</title>
    </h:head>
    <h:body>
        <h:form>
            <h:panelGrid columns="2">
                <h:outputText value="Görüşünüz:"/>
                <h:inputTextarea value="#{mail.gorus}"/>
                <h:outputText value="Adınız Soyadınız:"/>
                <h:inputText value="#{mail.ad}"/>
                <h:outputText value="Mail Adresiniz:"/>
                <h:inputText value="#{mail.mailAdresi}"/>
                <h:commandButton actionListener="#{mail.mailAt}" value="GÖNDER" action="gonderildi.xhtml?faces-redirect=true"/>
            </h:panelGrid>
        </h:form>
    </h:body>
</html>

Mail.java Kodu

import java.util.Properties;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
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;
@ManagedBean
@RequestScoped
public class Mail {
static String gorus;
static String ad;
static String mailAdresi;

    public String getGorus() {
        return gorus;
    }

    public void setGorus(String gorus) {
        this.gorus = gorus;
    }

    public String getAd() {
        return ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }

    public String getMailAdresi() {
        return mailAdresi;
    }

    public void setMailAdresi(String mailAdresi) {
        this.mailAdresi = mailAdresi;
    }

    public  void mailAt(){
             final String username = "oturum açmak istediğiniz e-mail adresi";
             final String password = "oturum açmak istediğiniz e-mail adresinin şifresi";
             Properties properties = new Properties();
             properties.put("mail.smtp.auth", "true");
             properties.put("mail.smtp.starttls.enable", "true");
             properties.put("mail.smtp.host", "smtp.gmail.com");
             properties.put("mail.smtp.port", "587");

             Session session = Session.getInstance(properties,
                           new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                           return new PasswordAuthentication(username, password);
                    }
             }); 
             try {

                    Message message = new MimeMessage(session);
                    message.setFrom(new InternetAddress("[email protected]"));
                    message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("mailin gönderilmesini istediğiniz hesap"));
                    message.setSubject("KOD5 Hakkındaki Görüşler");
                    message.setText(mailAdresi+"'den gelen mail şu şekilde:n"+ad+" "+gorus); 
                    Transport.send(message);
 
             } catch (MessagingException ex) {
                    throw new RuntimeException(ex);
             }
       }
}

Java kodumuz içinde bir mail hesabına mail gönderme işlevini mailAt() metodu yerine getiriyor. Bu metot mail gönderebilmek için bir oturum açılmasına ihtiyaç duyuyor. Örneğin KOD5 için düşünürsek  kişinin yazdığı görüş KOD5’in mail adresi ve şifresi ile oturum açılarak KOD5’e veya ilgili yazara gönderilebilir.

properties.put(“mail.smtp.auth”, “true”); satırı ile yetkilendirmenin gerekli olduğunu bildiriyoruz.

properties.put(“mail.smtp.host”, “smtp.gmail.com”); satırı ile oturum açma işleminin GMail ile yapılacağını bildiriyoruz.

Daha sonra properties nesnesini kullanarak oturum açıyoruz ve bu oturum ile gönderilecek mail bilgilerini işleyip Transport.send(message); komutu ile mail gönderim işlemini tamamlıyoruz.

Ekran Çıktıları

mail1

 

 

 

 

 

 

 

 

 

mail2

 

 

 

 

 

 

Gelecek yazıda görüşmek üzere sağlıcakla kalın arkadaşlar.

Yorum Yap