Re: How to use sendmail in Java?
I am giving here the full source code by using this code i have
successfully sent mail to any address. You have to set the classpath
of the JavaMail API first... then try this code... with proper values
in the fields
//here is the code
//Author - A. B. Mondal(die4java@gmail.com)
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
// Send a simple, single part, text/plain e-mail
public class TestEmail {
public static void main(String[] args) {
// SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!!
String to = "TO@domain.com";
String from = "from@domain.com";
// SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!!
String host = "mail.infobase.in";
// Create properties, get Session
Properties props = new Properties();
// If using static Transport.send(),
// need to specify which host to send it to
props.put("mail.smtp.host", host);
// To see what is going on behind the scene
props.put("mail.debug", "true");
Session session = Session.getInstance(props);
try {
// Instantiate a message
Message msg = new MimeMessage(session);
//Set message attributes
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("UR SUBJECT");
msg.setSentDate(new Date());
// Set message content
msg.setText("This is a test of sending a " +
"plain text e-mail through Java.\n" +
"BY YOU");
//Send the message
Transport.send(msg);
}
catch (MessagingException mex) {
// Prints all nested (chained) exceptions as well
mex.printStackTrace();
}
}
}//End of class
Regards
Aurobindo
Java Developer
void.no.spam.com@gmail.com wrote:
I have the following Perl code that works for sending email from a
Linux machine:
open(SENDMAIL, "|/usr/sbin/sendmail -t") or die "Unable to open
sendmail";
print(SENDMAIL "To: $recipients\n");
print(SENDMAIL "Subject: Test Results\n");
print(SENDMAIL "\n");
print(SENDMAIL "here are the results\n");
close(SENDMAIL);
I want to do the same thing in Java, but when I try to open that file,
I get "java.io.FileNotFoundException: !/usr/sbin/sendmail -t (No such
file or directory)"
So then I tried to use the JavaMail API, and I got the following
exception:
send failed, exception: javax.mail.SendFailedException: Sending
failed;
nested exception is:
class javax.mail.MessagingException: Could not connect to SMTP
host: 10.11.8.45, port: 25;
nested exception is:
java.net.ConnectException: Connection refused
I did a ps -fea and I see that sendmail is running and accepting
connections. netstat -an shows that port 25 is listening. Iptables
is not running so it isn't a firewall issue. I'm trying to run the
Java program from the same machine where sendmail is running. Any
idea why JavaMail can't connect?
This is the code I'm using:
java.util.Properties props = new java.util.Properties();
props.put("mail.smtp.host", "10.11.8.45");
props.put("mail.from", "sender@domain");
Session session = Session.getInstance(props, null);
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO,
"test@ourdomain.com");
msg.setSubject("JavaMail hello world example");
msg.setSentDate(new java.util.Date());
msg.setText("Hello, world!\n");
Transport.send(msg);
}
catch (MessagingException mex) {
System.out.println("send failed, exception: " + mex);
}