camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Peterson (JIRA)" <j...@apache.org>
Subject [jira] Created: (CAMEL-1028) Don't require username on send mail routes (relays don't require login)
Date Mon, 27 Oct 2008 11:08:52 GMT
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


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.

e	RuntimeCamelException  (id=212)	
	cause	FailedToCreateProducerException  (id=215)	
	detailMessage	"org.apache.camel.FailedToCreateProducerException: Failed to create Producer
for endpoint: Endpoint[smtp://mail.contextweb.corp]. Reason: java.lang.NullPointerException"
(id=217)	
	stackTrace	null	


Stack Trace:
Thread [Thread: 1 org.apache.camel.component.mail.MailComponent@663ec] (Suspended)	
	AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(Exchange, AsyncCallback)
line: 45	
	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