package sushi.email;
import java.io.*;
import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
import com.sun.mail.imap.IMAPFolder;
/**
* Utils for sending emails via google mail
*/
public class EmailUtils {
public static String user = "INSERT YOUR googlemail";
public static String pass = "INSERT YOUR EMAIL PW";
public static void main(String[] args) throws MessagingException, IOException {
Session session = EmailUtils.getGMailSession(user, pass);
printTestInbox(session);
sendTestMail(session);
}
private static void printTestInbox(Session session)
throws MessagingException, IOException {
Folder inbox = EmailUtils.openPop3InboxReadWrite( session );
EmailUtils.printAllTextPlainMessages( inbox );
EmailUtils.closeFolder( inbox );
}
public static boolean sendBP2013Mail(String recipient, String subject, String message) {
try {
Session session = getGMailSession(user, pass);
postMail(session, recipient, subject, message);
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
public static void sendTestMail(Session session) throws MessagingException{
EmailUtils.postMail(session, "bp2013w1@gmail.com", "Kurze Info", "test msg" );
}
public static Session getGMailSession(final String user, final String pass ) {
final Properties props = new Properties();
// Zum Empfangen
props.setProperty("mail.store.protocol", "imaps");
// Zum Senden
props.setProperty("mail.smtp.host", "smtp.gmail.com" );
props.setProperty("mail.smtp.auth", "true" );
props.setProperty("mail.smtp.port", "465" );
props.setProperty("mail.smtp.socketFactory.port", "465" );
props.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory" );
props.setProperty("mail.smtp.socketFactory.fallback", "false" );
return Session.getInstance(props, new javax.mail.Authenticator() {
@Override protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, pass);
}
});
}
/**
* opens inbox folder in read write modus
* returns inbox folder
*/
public static Folder openPop3InboxReadWrite( Session session ) throws MessagingException {
Store store = session.getStore( "imaps" );
store.connect("imap.googlemail.com",user, pass);
IMAPFolder folder = (IMAPFolder) store.getFolder( "INBOX" );
if(!folder.isOpen())
folder.open(Folder.READ_WRITE);
return folder;
}
/**
* return trash folder in read write modus
*/
public static Folder openPop3TrashReadWrite( Session session ) throws MessagingException {
Store store = session.getStore( "imaps" );
store.connect("imap.googlemail.com",user, pass);
IMAPFolder folder = (IMAPFolder) store.getFolder( "[Gmail]/Papierkorb" );
if(!folder.isOpen())
folder.open(Folder.READ_WRITE);
return folder;
}
/**
* closes folder
*/
public static void closeFolder( Folder folder ) throws MessagingException {
folder.close( false );
folder.getStore().close();
}
/**
* sends email
*/
public static void postMail( Session session, String recipient, String subject, String message ) throws MessagingException {
Message msg = new MimeMessage( session );
InternetAddress addressTo = new InternetAddress( recipient );
msg.setRecipient( Message.RecipientType.TO, addressTo );
msg.setSubject( subject );
msg.setContent( message, "text/plain" );
Transport.send( msg );
}
public static void printAllTextPlainMessages( Folder folder ) throws MessagingException, IOException {
for ( Message m : folder.getMessages() ){
System.out.println( "\nNachricht:" );
System.out.println( "Von: " + Arrays.toString(m.getFrom()) );
System.out.println( "Betreff: " + m.getSubject() );
System.out.println( "Gesendet am: " + m.getSentDate() );
System.out.println( "Content-Type: " +
new ContentType( m.getContentType() ) );
if ( m.isMimeType( "text/plain" ) )
System.out.println( m.getContent() );
}
}
}