Click here to Skip to main content
15,885,146 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class MailClient
{
  public void sendMail(String mailServer, String from, String to,
		       String subject, String messageBody,
		       String[] attachments) throws
		       MessagingException, AddressException
  {
    // Setup mail server
    Properties props = System.getProperties();
    props.put("mail.smtp.host", mailServer);

    // Get a mail session
    Session session = Session.getDefaultInstance(props, null);

    // Define a new mail message
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    message.setSubject(subject);
    // Create a message part to represent the body text
    BodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setText(messageBody);

    //use a MimeMultipart as we need to handle the file attachments
    Multipart multipart = new MimeMultipart();
    //add the message body to the mime message
    multipart.addBodyPart(messageBodyPart);

    // add any file attachments to the message
    addAtachments(attachments, multipart);

    // Put all message parts in the message
    message.setContent(multipart);

    // Send the message
    Transport.send(message);
  }
  
  protected void addAtachments(String[] attachments, Multipart multipart) throws MessagingException, AddressException
  {
    for(int i = 0; i<= attachments.length -1; i++)
    {
      String filename = attachments[i];
      MimeBodyPart attachmentBodyPart = new MimeBodyPart();

      //use a JAF FileDataSource as it does MIME type detection
      DataSource source = new FileDataSource(filename);
      attachmentBodyPart.setDataHandler(new DataHandler(source));
      //assume that the filename you want to send is the same as the
      //actual file name - could alter this to remove the file path
      attachmentBodyPart.setFileName(filename);

      //add the attachment
      multipart.addBodyPart(attachmentBodyPart);
    }
  }

  public static void main(String[] args)
  {
    try
    {
      MailClient client = new MailClient();
      String server="pop3.yahoo.com";
      String from="email1@yahoo.com";
      String to = "email2@yahoo.com";
      String subject="Test";
      String message="Testing";
      String[] filenames = {"c:/somefile.txt"};
      client.sendMail(server,from,to,subject,message,filenames);
    }
    catch(Exception e)
    {
      e.printStackTrace(System.out);
    }
  }
}


ERROR:
<br />
javax.mail.MessagingException: Could not connect to SMTP host: pop3.yahoo.com, port: 25;<br />
  nested exception is:<br />
	java.net.ConnectException: Connection timed out: connect<br />
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1227)<br />
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322)<br />
	at javax.mail.Service.connect(Service.java:236)<br />
	at javax.mail.Service.connect(Service.java:137)<br />
	at javax.mail.Service.connect(Service.java:86)<br />
	at javax.mail.Transport.send0(Transport.java:150)<br />
	at javax.mail.Transport.send(Transport.java:80)<br />
	at pack.MailClient.sendMail(MailClient.java:57)<br />
	at pack.MailClient.main(MailClient.java:94)<br />
Posted
Updated 9-Dec-10 21:10pm
v2
Comments
JF2015 10-Dec-10 3:10am    
Edited to improve code formatting.

As far as I remember Yahoo not provide direct access to SMTP host, free. You have to pay. Not like google. Normally I use gmail account for these kind of implementation.
 
Share this answer
 
Can you show what you have on line 94 in MailClient.java. I mean is this all?
 
Share this answer
 
v2
Comments
Venkatesh Mookkan 4-Jan-11 22:49pm    
When you are about to ask something from the questionnaire please use "Add Comments" link below the question to keep the answer section clean.
what do you mean? in line 94 its calls a function "sendMail" and that function send mail
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900