Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Creative commons Attribution-NonCommercial license. http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
  
  package base.jee.task;
  
 import java.util.List;
 
 import base.task.Task;
 import base.uuid.UUID;

Deliver any mail that is pending delivery.
 
 public class SendMailTask extends Task {
 
 	private API api;
 
 	public SendMailTask(API api) {
 		super();
 
 		this. = api;
 	}
 
 	public void run() throws InterruptedException {
 		try {
 			String host = .getSettingsCache().get("smtp.hostname"null);
 			String port = .getSettingsCache().get("smtp.port"null);
 
 			if(host == null || host.length() == 0) {
 				return;
 			}
 
 			if(port == null || port.length() == 0) {
 				return;
 			}
 
 			for(Email email : .getPendingEmail(5)) {
 				List<Stringheaders = new LinkedList<>();
 				String messageId = null;
 				if(email.getHeaders() != null) {
 					for(String h : email.getHeaders()) {
 						if(h.toLowerCase().startsWith("message-id:")) {
 							messageId = h;
 						}
 						headers.add(h);
 					}
 				}
 
 				// Ensure email headers contain a Message-ID
 				if(messageId == null) {
 					InetAddress address = InetAddress.getLocalHost();
 					if(email.getUuid() != null) {
 						messageId = email.getUuid().toString().toUpperCase() + "@";
 					} else {
 						messageId = new UUID().toString().toUpperCase() + "@";
 					}
 
 					// Use the domain in the from email field in the Message-ID if possible
 					String fromDomain = null;
 					if(email.getFrom() != null) {
 						EmailAddress[] r = parse.parse(email.getFrom());
 						if(r != null && r.length > 0) {
 							fromDomain = r[0].getAddress().substring(r[0].getAddress().indexOf('@') + 1);
 							if(fromDomain.length() == 0) {
 								fromDomain = null;
 							}
 						}
 					}
 
 					if(fromDomain != null) {
 						messageId = messageId + fromDomain;
 					} else if(address.getHostName() != null && address.getHostName().length() > 0) {
 						messageId = messageId + address.getHostName();
 					} else {
 						messageId = messageId + address.getHostAddress();
 					}
 					headers.add("Message-ID: <" + messageId + ">");
 				}
 
 				Mail m = new Mail(host, Integer.parseInt(port));
 				boolean success = m.sendHtmlMail(email.getFrom(), email.getTo(), email.getSubject(), email.getHtml(), email.getText(), headers) == 0;
 				if(!success) {
 				} else {
 					.setPendingEmailStatus(email.getUuid(), null);
 				}
			}
catch(IOException e) {
			//TODO: Handle IOException occurring within the email sending loop
		}
	}
New to GrepCode? Check out our FAQ X