001 /** 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 package org.apache.camel.component.mail; 019 020 import org.apache.camel.RuntimeCamelException; 021 022 import javax.mail.Session; 023 import java.net.URI; 024 import java.util.Properties; 025 026 /** 027 * Represents the configuration data for communicating over email 028 * 029 * @version $Revision: 532790 $ 030 */ 031 public class MailConfiguration implements Cloneable { 032 private String defaultEncoding; 033 private String host; 034 private Properties javaMailProperties; 035 private String password; 036 private String protocol; 037 private Session session; 038 private String username; 039 private int port = -1; 040 private String destination; 041 private String from = "camel@localhost"; 042 private boolean deleteProcessedMessages = true; 043 private String folderName = "INBOX"; 044 045 public MailConfiguration() { 046 } 047 048 /** 049 * Returns a copy of this configuration 050 */ 051 public MailConfiguration copy() { 052 try { 053 return (MailConfiguration) clone(); 054 } 055 catch (CloneNotSupportedException e) { 056 throw new RuntimeCamelException(e); 057 } 058 } 059 060 public void configure(URI uri) { 061 String value = uri.getHost(); 062 if (value != null) { 063 setHost(value); 064 } 065 066 String scheme = uri.getScheme(); 067 if (scheme != null) { 068 setProtocol(scheme); 069 } 070 String userInfo = uri.getUserInfo(); 071 if (userInfo != null) { 072 setUsername(userInfo); 073 } 074 int port = uri.getPort(); 075 if (port >= 0) { 076 setPort(port); 077 } 078 079 // we can either be invoked with 080 // mailto:address 081 // or 082 // smtp:user@host:port/name@address 083 084 String fragment = uri.getFragment(); 085 if (fragment == null || fragment.length() == 0) { 086 fragment = userInfo + "@" + host; 087 } 088 else { 089 setFolderName(fragment); 090 } 091 setDestination(fragment); 092 } 093 094 public JavaMailConnection createJavaMailConnection(MailEndpoint mailEndpoint) { 095 JavaMailConnection answer = new JavaMailConnection(); 096 if (defaultEncoding != null) { 097 answer.setDefaultEncoding(defaultEncoding); 098 } 099 //answer.setDefaultFileTypeMap(fileTypeMap); 100 if (host != null) { 101 answer.setHost(host); 102 } 103 if (javaMailProperties != null) { 104 answer.setJavaMailProperties(javaMailProperties); 105 } 106 if (port >= 0) { 107 answer.setPort(port); 108 } 109 if (password != null) { 110 answer.setPassword(password); 111 } 112 if (protocol != null) { 113 answer.setProtocol(protocol); 114 } 115 if (session != null) { 116 answer.setSession(session); 117 } 118 if (username != null) { 119 answer.setUsername(username); 120 } 121 return answer; 122 } 123 124 // Properties 125 //------------------------------------------------------------------------- 126 127 public String getDefaultEncoding() { 128 return defaultEncoding; 129 } 130 131 public void setDefaultEncoding(String defaultEncoding) { 132 this.defaultEncoding = defaultEncoding; 133 } 134 135 public String getHost() { 136 return host; 137 } 138 139 public void setHost(String host) { 140 this.host = host; 141 } 142 143 public Properties getJavaMailProperties() { 144 return javaMailProperties; 145 } 146 147 public void setJavaMailProperties(Properties javaMailProperties) { 148 this.javaMailProperties = javaMailProperties; 149 } 150 151 public String getPassword() { 152 return password; 153 } 154 155 public void setPassword(String password) { 156 this.password = password; 157 } 158 159 public int getPort() { 160 return port; 161 } 162 163 public void setPort(int port) { 164 this.port = port; 165 } 166 167 public String getProtocol() { 168 return protocol; 169 } 170 171 public void setProtocol(String protocol) { 172 this.protocol = protocol; 173 } 174 175 public Session getSession() { 176 return session; 177 } 178 179 public void setSession(Session session) { 180 this.session = session; 181 } 182 183 public String getUsername() { 184 return username; 185 } 186 187 public void setUsername(String username) { 188 this.username = username; 189 } 190 191 public String getDestination() { 192 return destination; 193 } 194 195 public void setDestination(String destination) { 196 this.destination = destination; 197 } 198 199 public String getFrom() { 200 return from; 201 } 202 203 public void setFrom(String from) { 204 this.from = from; 205 } 206 207 public boolean isDeleteProcessedMessages() { 208 return deleteProcessedMessages; 209 } 210 211 public void setDeleteProcessedMessages(boolean deleteProcessedMessages) { 212 this.deleteProcessedMessages = deleteProcessedMessages; 213 } 214 215 public String getFolderName() { 216 return folderName; 217 } 218 219 public void setFolderName(String folderName) { 220 this.folderName = folderName; 221 } 222 }