java mail send mail

Business scene

       On the company's internal linux host, call the java application through the shell to connect to the company's mail server and send mail

 

Method to realize

       1> Read the configuration parameters in the ini file through the shell, export them into system environment variables, and then call the java program

       2>Read the environment variables in the java program to send emails

 

mail.ini

 

MAIL_HOST="192.168.1.21"
MAIL_FROM="[email protected]"
MAIL_TO_USERS="[email protected]"
MAIL_CC_USERS="[email protected],[email protected]"
MAIL_ATTACH_PATH="/application/attach"

 

mail.sh

 

#!/bin/sh

while read line;do
    eval "$line"
done < mail.ini

export MAIL_HOST=$MAIL_HOST
export MAIL_FROM=$MAIL_FROM

export MAIL_TO=$MAIL_TO_USERS
export MAIL_CC=$MAIL_CC_USERS
export MAIL_SUBJECT="hello"
export MAIL_CONTENT="good morning!"
export MAIL_ATTACHMENT=$MAIL_ATTACH_PATH

java -jar mailer.jar
RETCODE=$?
if [ $RETCODE -eq 0 ];
then
exit 0
else
exit 2
be

 

Mailer.java

 

import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMultipart;

public class Mailer {
	
	private String mailHost;
	private String mailFrom;
	private String mailTo;
	private String mailCc;
	private String mailSubject;
	private String mailContent;
	private String mailAttachmentPath;
	private String mailAttachmentFile;
	private final String MAIL_CONTENT="text/html;charset=shift_jis";
	private static int returnCode;
	
	public Mailer(){
		this.mailHost = System.getenv("MAIL_HOST");
		this.mailFrom = System.getenv("MAIL_FROM");
		this.mailTo = System.getenv("MAIL_TO");
		this.mailCc = System.getenv("MAIL_CC");
		this.mailSubject = System.getenv("MAIL_SUBJECT");
		this.mailContent = System.getenv("MAIL_CONTENT");
		this.mailAttachmentPath = System.getenv("MAIL_ATTACHMENT");
	}
	
	public void sendMail() throws MessagingException{
		Properties prop = new Properties();
		prop.setProperty("mail.host",this.mailHost);
		prop.setProperty("mail.transport.protocol","smtp");
		prop.setProperty("mail.smtp.auth","false");
		
		Session session = Session.getInstance(prop);
		
		Transport transport = null;
		
		try {
			transport = session.getTransport();
			transport.connect();
			if(transport.isConnected()){
				System.out.println("Connected successfully!");
			}
			
			Message message = null;
			this.mailAttachmentFile = this.getAttachment();
			if(!"".equals(this.mailAttachmentFile)){
				message =  this.createAttachMail(session);
			} else {
				message = this.createSimpleMail(session);
			}
			
			transport.sendMessage(message,message.getAllRecipients());
		} catch (NoSuchProviderException e) {
			throw e;
		} catch (MessagingException e) {
			throw e;
		} finally {
			try {
				if(transport.isConnected()){
					transport.close();
				}
				System.out.println("Disconnected successfully!");
			} catch (MessagingException e) {
				throw e;
			}
		}
	}
	
	private MimeMessage createSimpleMail(Session session) throws AddressException, MessagingException{
		MimeMessage message = new MimeMessage(session);
		message.setFrom(new InternetAddress(mailFrom));
		message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mailTo));
		if(mailCc != null && !"".equals(mailCc)){
			message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(mailCc));
		}
		message.setSubject(mailSubject);
		message.setContent(mailContent, MAIL_CONTENT);
		return message;
	}
	
	private MimeMessage createAttachMail(Session session) throws AddressException, MessagingException{
		MimeMessage message = new MimeMessage(session);
		message.setFrom(new InternetAddress(mailFrom));
		message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mailTo));
		if(mailCc != null && !"".equals(mailCc)){
			message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(mailCc));
		}
		message.setSubject(mailSubject);
		
		MimeBodyPart text = new MimeBodyPart();
		text.setContent(mailContent, MAIL_CONTENT);
		
		MimeBodyPart attach = new MimeBodyPart();
		DataHandler dh = new DataHandler(new FileDataSource(this.mailAttachmentFile));
		attach.setDataHandler(dh);
		attach.setFileName(dh.getName());
		
		MimeMultipart mp = new MimeMultipart();
		mp.addBodyPart(text);
		mp.addBodyPart(attach);
		mp.setSubType("mixed");
		message.setContent(mp);
		message.saveChanges();
		
		return message;
	}
	
	private String getAttachment(){
		if(this.mailAttachmentPath != null && !"".equals(this.mailAttachmentPath)){		
			File file = new File(this.mailAttachmentPath);
			File[] fileArray = file.listFiles();
			
			if(1 == fileArray.length){
				return fileArray[0].getAbsolutePath();
			}
			
			if( 0 == fileArray.length){
				return "";
			}
			
			long newTime = 0;
			int newIndex = 0;
			for(int i=0; i < fileArray.length; i++){
				long curTime = fileArray[i].lastModified();
				if(curTime > newTime){
					newTime = curTime;
					newIndex = i;
				}
			}
			
			return fileArray[newIndex].getAbsolutePath();
		}
		return "";
	}
	
	public static void main(String[] args){
		try {
			Mailer mailer = new Mailer();
			mailer.sendMail();
			returnCode = 0;
		} catch (Exception e) {
			returnCode = 1;
		} finally {
			System.exit(returnCode);
		}
	}
}

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326350366&siteId=291194637