api etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
api etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Ağustos 2014 Perşembe

Java Mail Api Hk.

MailSender.java

                                                       JAVA MAIL API ISLEMLERI

                          Java ile mail gönderme - Mail Subjectlerini okuma

Mail server host'u mail adresi ve şifre bilgilerinizi ilgili alanlara girmeniz yeterli. Kod ve jarlar için maven projesinin pom.xml'ine ekleyeceğiniz dependency'ler aşağıdaki gibi.

İyi çalışmalar.

>
        >
            >log4j>
            >log4j>
            >1.2.17>
            >jar>
        >
        >
            >javax>
            >javaee-web-api>
            >6.0>
            >provided>
        >
        >
            >javax.mail>
            >mail>
            >1.4.7>
            >jar>
        >
        >
   >org.apache.commons>
   >commons-collections4>
   >4.0>
        >
    >

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Flags.Flag;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.UIDFolder.FetchProfileItem;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.search.FlagTerm;
import org.apache.commons.lang3.StringUtils;

/**
 *
 * @author BeytullahC
 *
 * Simple demonstration of using the javax.mail API.
 *
 * Run from the command line. Please edit the implementation to use correct
 * email addresses and host name.
 */

public final class MailSender {

    public static void main(String... aArguments) {

        try {
            sendMail("senderMailAddress", "password", "smtpHost", new String[]{"toMail1", "toMail2"});
        } catch (Exception ex) {
            Logger.getLogger(MailSender.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static ArrayList readMailsImap(String host, String mail, String password) throws Exception {
        Properties props = new Properties();
        props.setProperty("mail.store.protocol", "imaps");
        props.setProperty("mail.imaps.ssl.trust", host);
        props.setProperty("mail.imaps.connectionpoolsize", "10");
        try {
            Session session = Session.getInstance(props, null);
            Store store = session.getStore();
            store.connect(host, mail, password);
            Folder inbox = store.getFolder("INBOX");
            inbox.open(Folder.READ_ONLY);
            FetchProfile profile = new FetchProfile();
            profile.add(FetchProfileItem.CONTENT_INFO);
            profile.add("X-mailer");
            Message msg[] = inbox.search(new FlagTerm(
                    new Flags(Flag.SEEN), false));
            ArrayList list = new ArrayList<>();
            SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss dd/MM/yy", Locale.ENGLISH);
            inbox.fetch(msg, profile);
            for (Message message : msg) {
                Multipart PART = new MimeMultipart();
                MessageDetail detail = new MessageDetail(StringUtils.join(message.getFrom(), ", "), message.getSubject(), formatter2.parse(formatter2.format(message.getSentDate())));
                list.add(detail);
            }
            return list;
        } catch (MessagingException mex) {
            throw new Exception(mex.getMessage());
        }
    }

    public static void sendMail(final String username, final String password, final String host, final String[] toMail) {
        // Recipient's email ID needs to be mentioned.
        String to = StringUtils.join(toMail, ",");
        // Sender's email ID needs to be mentioned
        String from = username;//change accordingly
        // Assuming you are sending email through relay.jangosmtp.net
        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");

        // Get the Session object.
        Session session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });

        try {
            // Create a default MimeMessage object.
            Message message = new MimeMessage(session);

            // Set From: header field of the header.
            message.setFrom(new InternetAddress(from));

            // Set To: header field of the header.
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to));

            // Set Subject: header field
            message.setSubject("Testing Subject");
            // Now set the actual message
            message.setText("Hello, this is sample for to check send "
                    + "email using JavaMailAPI ");

            // Send message
            Transport.send(message);

            System.out.println("Sent message successfully....");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}


import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author BeytullahC
 */
@XmlRootElement(name = "messageDetail")
public class MessageDetail {

    public MessageDetail() {
    }

    public MessageDetail(String subject, Date sendDate) {
        this.subject = subject;
        this.sendDate = sendDate;
    }

    public MessageDetail(String from, String subject, Date sendDate) {
        this.from = from;
        this.subject = subject;
        this.sendDate = sendDate;
    }

    private String from;
    private String subject;
    private Date sendDate;


    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public Date getSendDate() {
        return sendDate;
    }

    public void setSendDate(Date sendDate) {
        this.sendDate = sendDate;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

}