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