21 Eylül 2014 Pazar

javax ile smtp mail gönderme

Merhabalar herkese,
bu yazımda sizlere javax ile smtp doğrulama yaparak mail gönderme işlemi yapacağız. Java da Mail gönderme işlemi yapan birkaç yöntem var ben sadece bir tanesini anlatacağım. Bu size şimdilik  yol göstermiş olsun ilerleyen zamanlarda ihtiyaç duyulursa diğer metodları da yazarım.


Öncelikle yine intelliJ ile bir web(Spring MVC) projesi oluşturarak işe başlıyoruz.
projenin bitmiş hali aşağıdaki yapıda olacaktır:


projeyi oluşturduktan sonra maven dosyasını(pom.xml) aşağıdaki tanımlamaları ekleyelim.
pom.xml 
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.7.1</version>
        </dependency>

burada gördüğünüz üzere iki farklı tanımlama var. Birincisi mail göndermemize yarayan jar diğeri ise json değerleri okumamıza yarar.


index html sayfasında basit bir form oluşturalım ve bu form sayesinden son kullanıcıdan mail bilgilerini alalım.

index.html 
<div class="mailDiv">
    <form role="form" id="mailForm" method="POST" onsubmit="return false;">
        <div class="form-group">
            <input type="text" class="form-control" name="firstname" id="firstname" placeholder="Ad">
        </div>

        <div class="form-group">
            <input type="text" class="form-control" name="lastname" id="lastname" placeholder="Soyad">
        </div>
        <div class="form-group">
            <input type="email" class="form-control" id="email" name="email" placeholder="E-Posta">
        </div>

        <div class="form-group">
            <input type="password" class="form-control" id="password" name="password" placeholder="Sifre">
        </div>

        <div class="form-group">
            <input type="text" class="form-control" id="subject" name="subject" placeholder="Konu">
        </div>

        <div class="form-group">
            <textarea class="form-control" rows="3" name="message"></textarea>
        </div>
        <button type="submit" id="btnFormPost" class="btn btn-primary">Gonder</button>
    </form>
</div>

özetle bu formdan bilgileri post edip java ile karşılayacağız. Daha sonra  gelen değerli alarak Javax ile mail gönderme yapacağız.

 MailController.java
        final Mail mail = new Mail();
        mail.setFirstname(request.getParameter("firstname")); // Adı
        mail.setLastname(request.getParameter("lastname")); // Soyadı
        mail.setFromMail(request.getParameter("email")); //Gönderen Mail
        mail.setToMail(request.getParameter("email")); // Alan Mail
        mail.setPassword(request.getParameter("password")); // Gönderen Mail Şifresi
        mail.setMessage(request.getParameter("message")); // Mail mesajı
        mail.setSubject(request.getParameter("subject")); //mail konusu


        mail.setHost("smtp.gmail.com"); //sender smtp host
        mail.setPort(587);//smtp port

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", mail.getHost());
        props.put("mail.smtp.port", "587");//gönderen mail port

üstteki kodlar ile formdan gelen bilgilerle Mail nesnesini dolduracağız. Ayrıca Properties sınıfını da gmail in mail sunucu bilgilerine göre dolduruyoruz. Diğer mail sunucular için ayarları(port,auth,host,..vs) güncellemeyi unutmayın.

projenin çıktısı aşağıdaki gibidir:


formdan girilen değerlerle mail gönderme işlemi yaptıktan sonra Adı,Soyadı,Email ve Email gönderme durumunu ekrana yazacaktır.

kaynak dosyalar(github) : indirmek için tıklayın

Hiç yorum yok:

Yorum Gönderme