camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] Closed: (CAMEL-1028) Don't require username on send mail routes (relays don't require login)
Date Mon, 27 Oct 2008 12:36:52 GMT

     [ https://issues.apache.org/activemq/browse/CAMEL-1028?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Claus Ibsen closed CAMEL-1028.
------------------------------

    Fix Version/s: 1.5.0
       Resolution: Fixed

David

#2 Yes it should be fixed in 1.5.

Jonathan have committed the fix:
Author: janstey
Date: Sat Oct 25 18:38:39 2008
New Revision: 707928

> Don't require username on send mail routes (relays don't require login)
> -----------------------------------------------------------------------
>
>                 Key: CAMEL-1028
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1028
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-mail
>    Affects Versions: 1.4.0
>            Reporter: David Peterson
>             Fix For: 1.5.0
>
>
> Don't require a login in the send mail URI because internal relay mail servers don't
require them.  If you do include one, the mail server gets confused and thinks that you are
looping and it will bounce the email so this is a bit inconvenient bug.
> Thread [Thread: 1 org.apache.camel.component.mail.MailComponent@663ec] (Suspended (exception
NullPointerException))	
> 	Properties(Hashtable<K,V>).put(K, V) line: 394	
> 	MailConfiguration.createJavaMailProperties() line: 146	
> 	MailConfiguration.createJavaMailSender() line: 107	
> 	MailEndpoint.createProducer() line: 53	
> 	ProducerCache<E>.getProducer(Endpoint<E>) line: 50	
> 	ProducerCache<E>.send(Endpoint<E>, Processor) line: 84	
> 	DefaultProducerTemplate<E>.send(Endpoint<E>, Processor) line: 84	
> 	DefaultProducerTemplate<E>.sendBodyAndHeaders(Endpoint, Object, Map<String,Object>)
line: 143	
> 	DefaultProducerTemplate<E>.sendBodyAndHeaders(String, Object, Map<String,Object>)
line: 139	
> 	LogEmailThrowsAdvice.sendEmail(String) line: 64	
> 	LogEmailThrowsAdvice.afterThrowing(Method, Object[], Object, Exception) line: 42	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native
method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	ThrowsAdviceInterceptor.invokeHandlerMethod(MethodInvocation, Throwable, Method) line:
146	
> 	ThrowsAdviceInterceptor.invoke(MethodInvocation) line: 131	
> 	ReflectiveMethodInvocation.proceed() line: 171	
> 	JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 204	
> 	$Proxy24.process(Exchange) line: not available	
> 	BeanProcessor.process(Exchange) line: 81	
> 	BeanEndpoint(ProcessorEndpoint).onExchange(Exchange) line: 92	
> 	ProcessorEndpoint$1.process(Exchange) line: 66	
> 	AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(Exchange, AsyncCallback)
line: 43	
> 	SendProcessor.process(Exchange, AsyncCallback) line: 75	
> 	InstrumentationProcessor.process(Exchange, AsyncCallback) line: 57	
> 	DeadLetterChannel.process(Exchange, AsyncCallback, DeadLetterChannel$RedeliveryData)
line: 155	
> 	DeadLetterChannel.process(Exchange, AsyncCallback) line: 91	
> 	InstrumentationProcessor.process(Exchange, AsyncCallback) line: 57	
> 	UnitOfWorkProcessor.process(Exchange, AsyncCallback) line: 39	
> 	AsyncProcessorHelper.process(AsyncProcessor, Exchange) line: 41	
> 	UnitOfWorkProcessor(DelegateAsyncProcessor).process(Exchange) line: 66	
> 	MailConsumer.processMessage(Message) line: 169	
> 	MailConsumer.processMessages(Message[]) line: 151	
> 	MailConsumer.poll() line: 105	
> 	MailConsumer(ScheduledPollConsumer<E>).run() line: 65	
> 	Executors$RunnableAdapter<T>.call() line: 441	
> 	FutureTask$Sync.innerRunAndReset() line: 317	
> 	ScheduledThreadPoolExecutor$ScheduledFutureTask<V>(FutureTask<V>).runAndReset()
line: 150	
> 	ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.access$101(ScheduledThreadPoolExecutor$ScheduledFutureTask)
line: 98	
> 	ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.runPeriodic() line: 181	
> 	ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.run() line: 205	
> 	ThreadPoolExecutor$Worker.runTask(Runnable) line: 885	
> 	ThreadPoolExecutor$Worker.run() line: 907	
> 	Thread.run() line: 619	
> Code:
> AOPExceptionHandler:
> 	private void sendEmail(String errors) {
> 		template = camelContext.createProducerTemplate();
> 		StringBuffer body = new StringBuffer("Hello Techops.\n");
> 		body.append("Got an exception please handle.\n\nRegards Reportdev.\n\n");
> 		body.append(errors);
> 		template.sendBodyAndHeaders(emailServerUri, body, emailProperties);
> 	}
> applicationContext.xml
> <bean id="logThrowsAdvice" class="com.contextweb.advice.LogEmailThrowsAdvice">
> 		<property name="camelContext" ref="camel" />
> 		<property name="sendMail" value="true" />
> 		<!-- username=reportdev&amp;to=DPeterson@apache.com -->
> 		<property name="emailServerUri"
> 			value="smtp://mail.apache.corp" />
> 		<property name="emailProperties">
> 			<map>
> 				<entry key="From">
> 					<value>"ReportDev@apache.com"</value>
> 				</entry>
> 				<entry key="Subject">
> 					<value>"Exception in 3rd Party Reporting Email
> 						Processing"</value>
> 				</entry>
> 				<entry key="To">
> 					<value>"DPeterson@apache.com"</value>
> 				</entry>
> 			</map>
> 		</property>
> 		<property name="logFactory" ref="LogFactoryBean" />
> 	</bean>
> Workaround is to use URI for "To" and put the username after the ? in the URI.  This
will fool the mail relay server into routing the email bypassing it's loop detection logic:
> 	<!-- Define the ThrowsAdvice bean -->
> 	<bean id="logThrowsAdvice" class="com.contextweb.advice.LogEmailThrowsAdvice">
> 		<property name="camelContext" ref="camel" />
> 		<property name="sendMail" value="true" />
> 		<property name="emailServerUri"
> 			value="smtp://mail.contextweb.corp?username=reportdev&amp;to=DPeterson@apache.com"
/>
> 		<property name="emailProperties">
> 			<map>
> 				<entry key="From">
> 					<value>"ReportDev@apache.com"</value>
> 				</entry>
> 				<entry key="Subject">
> 					<value>"Exception in 3rd Party Reporting Email
> 						Processing"</value>
> 				</entry>
> 			</map>
> 		</property>
> 		<property name="logFactory" ref="LogFactoryBean" />
> 	</bean>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message