java发送邮件,可带附件

package com.agenda.tdyhweb.util.email;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class EmailAuthenticator extends javax.mail.Authenticator {
 private String userName = null;

 private String password = null;

 public void setUserName(String aUserName) {
  this.userName = aUserName;
 }

 public void setPassword(String aPassword) {
  this.password = aPassword;
 }

 public EmailAuthenticator() {
  super();
 }

 public EmailAuthenticator(String aUserName, String aPassword) {
  super();
  setUserName(aUserName);
  setPassword(aPassword);
 }

 // 一定要有这个方法,它是在需要身份验证时自动被调用的
 public PasswordAuthentication getPasswordAuthentication() {
  return new PasswordAuthentication(this.userName, this.password);
 }
}

---------------------------

package com.agenda.tdyhweb.util.email;

 

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.SendFailedException;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.activation.FileDataSource;
import javax.activation.DataHandler;
import java.util.Date;
import java.util.Properties;
import java.io.File;
import java.io.UnsupportedEncodingException;

public class EmailSender {
 private Session session = null;

 private String mailFrom = null;

 private String mailTo = null;

 private String mailCc = null;

 private String mailBcc = null;

 private String subject = null;

 private String content = null;

 private String attachFile = null;

 private String mailHost = null;

 private String userName = null;

 private String password = null;

 public EmailSender(String mailHost) {
  Properties prop = new Properties();
  prop.put("mail.transport.protocol", "smtp");
  prop.put("mail.smtp.host", mailHost);

  this.session = Session.getDefaultInstance(prop, null);
 }

 public EmailSender(String mailHost, String userName, String password) {
  Properties prop = new Properties();
  prop.put("mail.transport.protocol", "smtp");
  prop.put("mail.smtp.host", mailHost);
  prop.put("mail.smtp.auth", "true");

  this.session = Session.getInstance(prop, new EmailAuthenticator(
    userName, password));
  // this.session.setDebug(true);
 }

 public EmailSender(String mailHost, String proxyHost, int proxyPort) {
  Properties prop = new Properties();
  prop.put("http.proxySet", "true");
  prop.put("http.proxyHost", proxyHost);
  prop.put("http.proxyPort", String.valueOf(proxyPort));
  prop.put("mail.transport.protocol", "smtp");
  prop.put("mail.smtp.host", mailHost);

  this.session = Session.getDefaultInstance(prop, null);
 }

 public EmailSender(String mailHost, String userName, String password,
   String proxyHost, int proxyPort) {
  Properties prop = new Properties();  
  prop.put("http.proxySet", "true");
  prop.put("http.proxyHost", proxyHost);
  prop.put("http.proxyPort", String.valueOf(proxyPort));
  prop.put("mail.transport.protocol", "smtp");
  prop.put("mail.smtp.host", mailHost);
  prop.put("mail.smtp.auth", "true");

  this.session = Session.getDefaultInstance(prop, new EmailAuthenticator(
    userName, password));
 }

 public void sendSimpleMail() throws MessagingException, SendFailedException {
  if (this.mailFrom == null) {
   throw new RuntimeException("NO   MAIL   FROM");
  }
  if (this.mailTo == null) {
   throw new RuntimeException("NO   MAIL   TO");
  }

  MimeMessage mimeMsg = new MimeMessage(this.session);

  mimeMsg.setFrom(new InternetAddress(mailFrom));
  mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
    .parse(mailTo));

  if (mailCc != null) {
   mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress
     .parse(mailCc));
  }

  if (mailBcc != null) {
   mimeMsg.setRecipients(Message.RecipientType.BCC, InternetAddress
     .parse(mailBcc));
  }

  mimeMsg.setSubject(subject, "GB2312");
  mimeMsg.setText(content, "GB2312");
  mimeMsg.setSentDate(new Date());

  Transport.send(mimeMsg);
 }

 // 带附件
 public void sendMultiPartMail() throws MessagingException,
   SendFailedException, UnsupportedEncodingException {
  if (this.mailFrom == null) {
   throw new RuntimeException("NO   MAIL   FROM");
  }
  if (this.mailTo == null) {
   throw new RuntimeException("NO   MAIL   TO");
  }
  if (this.attachFile == null) {
   throw new RuntimeException("NO   MAIL   TO");
  }
  File file = new File(attachFile);
  if (!file.canRead()) {
   throw new RuntimeException("Can't   find   the   attached   file!");
  }

  MimeMessage mimeMsg = new MimeMessage(this.session);

  mimeMsg.setFrom(new InternetAddress(mailFrom));
  mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
    .parse(mailTo));

  if (mailCc != null) {
   mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress
     .parse(mailCc));
  }

  if (mailBcc != null) {
   mimeMsg.setRecipients(Message.RecipientType.BCC, InternetAddress
     .parse(mailBcc));
  }

  mimeMsg.setSubject(subject, "GB2312");

  MimeBodyPart mbp1 = new MimeBodyPart();
  //mbp1.setText(content, "GB2312");
  mbp1.setContent(content.toString(),"text/html;charset=GB2312");  
  MimeBodyPart mbp2 = new MimeBodyPart();
  FileDataSource fds = new FileDataSource(this.attachFile);
  mbp2.setDataHandler(new DataHandler(fds));
  mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));

  MimeMultipart mp = new MimeMultipart();
  mp.addBodyPart(mbp1);
  mp.addBodyPart(mbp2);
//  设置邮件内容,将邮件body部分转化为HTML格式
  //mimeMsg.setDataHandler(new javax.activation.DataHandler(new com.agenda.tdyhweb.util.email.StringDataSource (content,"text/html")));

  mimeMsg.setContent(mp);

  mimeMsg.setSentDate(new Date());

  Transport.send(mimeMsg);

 }

 public void setMailFrom(String mailFrom) {
  this.mailFrom = mailFrom;
 }

 public void setMailTo(String mailTo) {
  this.mailTo = mailTo;
 }

 public void setMailCc(String mailCc) {
  this.mailCc = mailCc;
 }

 public void setMailBcc(String mailBcc) {
  this.mailBcc = mailBcc;
 }

 public void setSubject(String subject) {
  this.subject = subject;
 }

 public void setContent(String content) {
  this.content = content;
 }

 public void setAttachFile(String attachFile) {
  this.attachFile = attachFile;
 }
}
---------------------------------------

package com.agenda.tdyhweb.util.email;
import java.util.Locale;
import java.util.ResourceBundle;


public class GetProperties {

 
 private ResourceBundle bundle = null;
 private String proName = "";
 public static final String FILEPATH = "UserFiles/files/";
 public static final String IMAGESPATH = "UserFiles/images/";
 public GetProperties(String proname){
  this.proName = proname;
 }

 /**
  * 按照KEY获取FTP配置文件中相应值
  * @param type
  * @return 取其中的属性值(String类型)
  */
 public String getProp(String type) throws Exception {
  if (bundle == null) {
   try {
    bundle = ResourceBundle.getBundle(this.proName, Locale.getDefault());
   } catch (Exception e) {
    System.out.println("获取资源出错!" + e);
   }
  }
  return bundle.getString(type);
 }
}
-------------------------------------

package com.agenda.tdyhweb.util.email;
import com.agenda.tdyhweb.util.email.GetProperties;;
public class Sender {
 public Sender() {
 }

 public void send(String to) {
  try {
   GetProperties gp = new GetProperties("email");
   String host="";
   String user="";
   String pass="";
   String from="";
   String address="";
   String title="理财专刊";
   String content="尊敬的投资者:<br><br>";
   content=content + "&nbsp;&nbsp;&nbsp;&nbsp;您好!感谢您对支持与关注!<br><br>";
   content=content + "&nbsp;&nbsp;&nbsp;&nbsp;混合型基金将于8月27日拆分,并限量申购,为了让您更好地了";
   content=content + "解此只基金,我们特制作了《理财专刊》供您参考,请参见附件.<br><br>";   
   content=content + "&nbsp;&nbsp;&nbsp;&nbsp;选基金是股票配置比例为50%-70%的积极进取混合型基金,本基金";
   content=content + "股市债市两手抓,在严格控制风险的同时更积极把握市场上升的机遇。在选择企业时,";
   content=content + "本基金将更关注如新能源利用等符合“十一五规划”的题材,重点投资于较高的投资效";
   content=content + "率下持续成长的公司,为基金持有人提供可持续的价值增值。<br><br>";
   content=content + "&nbsp;&nbsp;&nbsp;&nbsp;网上交易现已全面支持建行卡、农行卡、兴业银行卡,您持以上银行卡可";
   content=content + "直接登录网站(办理开户、申购等手续,网上申购免排队,费率0.6%。<br><br>";   
   content=content + "&nbsp;&nbsp;&nbsp;&nbsp;财智分享,合赢人生!<br><br>";
   content=content + "&nbsp;&nbsp;&nbsp;&nbsp;基金管理有限公司<br<br>";
      
   host=gp.getProp("mail.host");   
   user=gp.getProp("mail.user");
   pass=gp.getProp("mail.password");
   from=gp.getProp("mail.defaultemail");
   address=gp.getProp("address");
   //title=gp.getProp("mail.title");   
   //content=gp.getProp("mail.content");
   System.out.println(address);
   EmailSender sender = new EmailSender(host,user,pass);
   sender.setMailFrom(from);
   sender.setMailTo(to);
   sender.setSubject(title);
   sender.setContent(content);
   String filename=address + "//zk.pdf";
   System.out.println("filename is" + filename);
   sender.setAttachFile(filename);
   System.out.println("Sending   email   .....");
   sender.sendMultiPartMail();
   System.out.println("success!");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

-----------------------------------------

package com.agenda.tdyhweb.util.email;


public class StringDataSource implements javax.activation.DataSource
{
 private java.lang.String data;
    private java.lang.String type;

    public StringDataSource(java.lang.String data,java.lang.String type)
    {
     this.data = data;
     this.type=type;     
    }

    public java.io.InputStream getInputStream() throws java.io.IOException
    {
     return new java.io.StringBufferInputStream(data);
    }

    public java.io.OutputStream getOutputStream() throws java.io.IOException
    {
     throw new java.io.IOException("it does not support this method now!");
    }

    public java.lang.String getContentType(){
      return type;
    }

    public java.lang.String getName()
    {
      return " mymail ";
    }
}

-----------------------------------------------------------

mail.basePath=http://www.beijing-hyundai.com.cn
#smtp
mail.host=21*.10*.30.21*
#??
mail.user=pin.huan
#??
mail.password=huaping
#????smtp??
mail.issmtp=true
#???
mail.defaultemail=pin.huan@cn.agenda-asia.com

#??
mail.title="????"

#??
mail.content="??"
address=e:

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值