The execute method below hass the intresting mailing part (its a bit
messy as I have tryed diffrent approaches
Code snippet:
public class UsedAllotmentSendJob implements Job {
private final static Log logger =
LogFactory.getLog(UsedAllotmentSendJob.class);
private DataSource dataSource;
private Session mailSession;
public void setDatabase(DataSource ds) {
dataSource = ds;
}
public void setMailSession(Session s) {
mailSession = s;
} public void execute(JobExecutionContext jobcontext)
throws JobExecutionException {
//trying with added autentication
String smtphost="thednsaddress";
String username="thelogginname";
String password="thelogginpassword";
Message message = new MimeMessage(mailSession);
try{
InternetAddress from = new InternetAddress("the_sender_addr");
InternetAddress to = new InternetAddress("the_resiver_addr");
String mailer = "smtpsend";
message.setHeader("X-Mailer", mailer);
message.setSentDate(new Date());
message.setFrom(from);
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("The subject");
message.setText("The message");
Transport tr = mailSession.getTransport("smtp");
tr.connect(smtphost, username, password);
//tr.connect(); //no extra params just the gbean settings
(host,port)
message.saveChanges(); // don't forget this
tr.sendMessage(message, message.getAllRecipients());
tr.close();
//replaced with the settup above
//mailSession.getTransport("smtp");
//Transport.send(message);
}catch(AddressException aex){
logger.error("execute got a AddressException
"+aex.getMessage());
}catch(MessagingException mex){
logger.error("execute got a MessagingException
"+mex.getMessage(),mex);
} }
}
Geronimo Quartz Plan
<?xml version="1.0" encoding="UTF-8"?>
<jobs xmlns="http://geronimo.apache.org/xml/ns/plugins/quartz-0.2">
<environment
xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
<moduleId>
<groupId>test</groupId>
<artifactId>ReportSendJobs</artifactId>
</moduleId>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>javamail-server</artifactId>
</dependency>
<dependency>
<groupId>console.dbpool</groupId>
<artifactId>MySqlDB_report_sender</artifactId>
</dependency>
</dependencies> </environment>
<job>
<job-name>Job name</job-name>
<job-class>classpath to jobb class</job-class>
<cron-expression>0/30 * * * * ?</cron-expression>
<resource-ref>
<property>Database</property>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<pattern>
<name>MySqlDB_report_sender</name>
</pattern>
</resource-ref>
<resource-ref>
<property>MailSession</property>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<pattern>
<name>mail/MailSession</name>
</pattern>
</resource-ref> </job> </jobs>
The "mail-server" plan (slightly moddyfied version of what I got
from Rick):
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
<dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1">
<dep:moduleId>
<dep:groupId>test</dep:groupId>
<dep:artifactId>javamail-server</dep:artifactId>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-mail</dep:artifactId>
<dep:version>1.1.1</dep:version>
<dep:type>jar</dep:type>
<dep:import>classes</dep:import>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-javamail-transport</dep:artifactId>
<dep:version>1.1.1</dep:version>
<dep:type>jar</dep:type>
<dep:import>classes</dep:import>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>rmi-naming</dep:artifactId>
<dep:type>car</dep:type>
</dep:dependency>
</dep:dependencies>
<dep:hidden-classes/>
<dep:non-overridable-classes/>
</dep:environment>
<gbean name="SMTPTransport"
class="org.apache.geronimo.mail.SMTPTransportGBean">
<attribute name="host">removed dns name</attribute>
<attribute name="port">25</attribute>
</gbean>
<gbean name="mail/MailSession"
class="org.apache.geronimo.mail.MailGBean">
<attribute name="transportProtocol">smtp</attribute>
<attribute name="debug">true</attribute>
<reference name="Protocols">
<name>SMTPTransport</name>
</reference>
</gbean>
</module>
Peter Petersson skrev:
It is a remote SMTP server (in our lan) and autentication shuld not
be needed from inside our LAN (I have sucsessfully accessed the
SMTP server from within a vanila tomcat5 web app without
autentication).
Could a autentication faliur result in a NoSuchProviderException ?
I have tryed setting the Transport attributes (smtphost, username,
password) from within the code
Transport tr = mailSession.getTransport("smtp");
tr.connect(smtphost, username, password);
and also tryed a GBean via the attributes (host,port).
The Gbean is from a sligtly moddified version of the "example mail
session" that Rick posted (he did a farly good shoot from the hip ;)).
I but regardles of a lott of testing with different setups i still get
javax.mail.NoSuchProviderException: Unable to locate provider for
protocol: smtp
at javax.mail.Session.getProvider(Session.java:227)
at javax.mail.Session.getTransport(Session.java:336)
Im testing this on a fresh install of Geronimo 1.1.1
Anny suggestions ?
Cheers
Peter
Aaron Mulder skrev:
Does your localhost have a mail server running? Or are you trying to
send through a remote SMTP server? Is the mail server open or do you
need to authenticate to it?
Thanks,
Aaron
On 9/29/06, Peter Petersson <[EMAIL PROTECTED]> wrote:
Hi all!
I quite new to Geronimo (using 1.1.1) and have some problems
geting mail
to work from a geronimo-quartz job.
As I understand it I need to set up a gbean or do some other
configuration for javamail to work (?).
The example i have folowed for the Quartz Scheduler Plugin over at
http://gplugins.sourceforge.net/ have a nice setup including
mailing (in
the "Deployable Jobs Example" section) but it dose not go into
details
on howto set up mailing (its not the scope of the example).
What do I need to do to get it to work? as it is now i get this
exception
MessagingException Unable to locate provider for protocol: smtp
Anny good pointer out there to get mailing working in Geronimo ?
Cheers
Peter