java发送email(含代理方式,ssl方式,传统方式)

package spring.vhostall.com;
import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
/**
 * 通过代理发送邮件
 */
    /**
      * @param args
     */
    public static void main(String[] args) throws Exception {
     MailTest test = new MailTest();
     //发送邮件
//     test.sendmail();
     //通过代理发送邮件
     test.sendMailByProxy();
     }

    private void sendMailByProxy()throws Exception{
          Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
     //设置代理服务器
      Properties props = System.getProperties();
      props.setProperty("proxySet", "true");
      props.setProperty("socksProxyHost", "43.82.112.214");
      props.setProperty("socksProxyPort", "1080");
      props.setProperty("mail.smtp.host", "smtp.163.com");
      props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
      props.setProperty("mail.smtp.socketFactory.fallback", "false");
      props.setProperty("mail.smtp.port", "465");
      props.setProperty("mail.smtp.socketFactory.port", "465");
      props.setProperty("mail.smtp.auth", "true");
      props.setProperty("mail.debug", "true");
      props.setProperty("mail.transport.protocol", "smtp");
     final String username = "****";
     final String password = "****";
     
     //使用验证
      Session session = Session.getDefaultInstance(props,
             new javax.mail.Authenticator() {
                 protected PasswordAuthentication getPasswordAuthentication() {
                     return new javax.mail.PasswordAuthentication(username,password);
                  }
              });
      MimeMessage message = new MimeMessage(session);
      Address address = new InternetAddress("****");
      Address toAaddress = new InternetAddress("****");
     
      message.setFrom(address);
      message.setRecipient(MimeMessage.RecipientType.TO, toAaddress);
      message.setSubject("测试");
      message.setText("test");
      message.setSentDate(new Date());
      Transport transport = session.getTransport();
      transport.connect("smtp.163.com","****","****");
      transport.sendMessage(message, new Address[] {new InternetAddress("****")});
//      Transport.send(message);
      System.out.println("邮件发送!");
      transport.close();
      
    }
 public void sendmail() {/*
  try {
   String host = "smtp.gmail.com";
   String from = "demo@163.com";
   String to = "@163.com";
   String username = "****";
   String password = "****";
   String body = "This is a test";
   String subject = "Email Test";
   SmtpAuth sa = new SmtpAuth();
   sa.getuserinfo(username, password);
   Session session;
   MimeMessage message;
   Properties props = System.getProperties();
   props.setProperty("proxySet", "true");
   props.setProperty("socksProxyHost", "43.82.218.50");
   props.setProperty("socksProxyPort", "8080");
   props.put("mail.smtp.auth", "true");
   props.put("mail.smtp.host", host);
   session = Session.getInstance(props, sa);
   session.setDebug(true);
   message = new MimeMessage(session);
   message.setFrom(new InternetAddress(from));
   message.setRecipient(Message.RecipientType.TO, new InternetAddress(
     to));
   message.setSubject(subject);
   MimeBodyPart mbp = new MimeBodyPart();
   mbp.setText(body);
   Multipart mp = new MimeMultipart();
   mp.addBodyPart(mbp);
   message.setContent(mp);
   message.setSentDate(new java.util.Date());
   Transport transport = session.getTransport("smtp");
   transport.connect(host, username, password);
   transport.send(message);
  } catch (MessagingException e) {
   System.out.println("error" + e.getMessage());
  }
 */}

 class SmtpAuth extends javax.mail.Authenticator {
  private String user, password;

  public void getuserinfo(String getuser, String getpassword) {
   user = getuser;
   password = getpassword;
  }

  protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
   return new javax.mail.PasswordAuthentication(user, password);
  }
 }
}

依赖的jar包:http://download.csdn.net/detail/wu858773457/8699111

posted @ 2015-05-15 13:53  Earic  阅读(887)  评论(0编辑  收藏  举报