Mail Subject fetch and send mail using Gmail account and give popup of the result of sending mail's with saving of the mail in Gmail if it is sent...
import java.util.*;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
class GmailClient {
private String userName;
private String password;
private String sendingHost;
private int sendingPort;
private String from;
private String to;
private String subject;
private String text;
private String receivingHost;
private int receivingPort;
public void setAccountDetails(String userName,String password){
this.userName=userName;//sender's email can also use as User Name
this.password=password;
}
public void sendGmail(String from, String to, String subject, String text){
// This will send mail from -->sender@gmail.com to -->receiver@gmail.com
this.from=from;
this.to=to;
this.subject=subject;
this.text=text;
// For a Gmail account--sending mails-- host and port shold be as follows
this.sendingHost="smtp.gmail.com";
this.sendingPort=465;
Properties props = new Properties();
props.put("mail.smtp.host", this.sendingHost);
props.put("mail.smtp.port", String.valueOf(this.sendingPort));
props.put("mail.smtp.user", this.userName);
props.put("mail.smtp.password", this.password);
props.put("mail.smtp.auth", "true");
Session session1 = Session.getDefaultInstance(props);
Message simpleMessage = new MimeMessage(session1);
//MIME stands for Multipurpose Internet Mail Extensions
InternetAddress fromAddress = null;
InternetAddress toAddress = null;
try {
fromAddress = new InternetAddress(this.from);
toAddress = new InternetAddress(this.to);
} catch (AddressException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Sending email to: " + to + " failed !!!", "Falied to
Send!!!", JOptionPane.ERROR_MESSAGE);
}
try {
simpleMessage.setFrom(fromAddress);
simpleMessage.setRecipient(RecipientType.TO, toAddress);
// to add CC or BCC use
// simpleMessage.setRecipient(RecipientType.CC, new
InternetAddress("CC_Recipient@any_mail.com"));
// simpleMessage.setRecipient(RecipientType.BCC, new
InternetAddress("CBC_Recipient@any_mail.com"));
simpleMessage.setSubject(this.subject);
simpleMessage.setText(this.text);
//sometimes Transport.send(simpleMessage); is used, but for gmail it's different
Transport transport = session1.getTransport("smtps");
transport.connect (this.sendingHost,sendingPort, this.userName, this.password);
transport.sendMessage(simpleMessage, simpleMessage.getAllRecipients());
transport.close();
JOptionPane.showMessageDialog(null, "Mail sent successfully ...","Mail
sent",JOptionPane.PLAIN_MESSAGE);
} catch (MessagingException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Sending email to: " + to + " failed !!!", "Falied to
Send!!!", JOptionPane.ERROR_MESSAGE);
}
}
public void readGmail(){
/*this will print subject of all messages in the inbox of sender@gmail.com*/
this.receivingHost="imap.gmail.com";//for imap protocol
Properties props2=System.getProperties();
props2.setProperty("mail.store.protocol", "imaps");
// I used imaps protocol here
Session session2=Session.getDefaultInstance(props2, null);
try {
Store store=session2.getStore("imaps");
store.connect(this.receivingHost,this.userName, this.password);
Folder folder=store.getFolder("INBOX");//get inbox
folder.open(Folder.READ_ONLY);//open folder only to read
Message message[]=folder.getMessages();
FileOutputStream fos = new FileOutputStream("hneeth.txt");
for(int i=0;i<message.length;i++){
//print subjects of all mails in the inbox
String a = message[i].getSubject();
System.out.println(a);
// fos.write(a);
//anything else you want
}
fos.close();
//close connections
folder.close(true);
store.close();
} catch (Exception e) {
System.out.println(e.toString());
}
}
public static void main(String[] args) {
String mailFrom=new String("Senders@gmail.com");
//Sender must be a Gmail Account holder
String mailTo=new String("Recievers@gmail.com");
//but here you can send to any type of mail account
String senderPassword=new String("PassWord");
String senderUserName=new String("Senders@gmail.com");
//Mention your email subject and content
String mailSubject=new String("Testing Mail");
String mailText=new String("Have an Nice Day ...........!!!");
//Create a GmailClient object
GmailClient newGmailClient=new GmailClient();
//Setting up account details
newGmailClient.setAccountDetails(senderUserName, senderPassword);
//Send mail
newGmailClient.sendGmail(mailFrom, mailTo, mailSubject, mailText);
//Receive mails
newGmailClient.readGmail();
}
}
Comments