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 + " 您好!感谢您对支持与关注!<br><br>";
content=content + " 混合型基金将于8月27日拆分,并限量申购,为了让您更好地了";
content=content + "解此只基金,我们特制作了《理财专刊》供您参考,请参见附件.<br><br>";
content=content + " 选基金是股票配置比例为50%-70%的积极进取混合型基金,本基金";
content=content + "股市债市两手抓,在严格控制风险的同时更积极把握市场上升的机遇。在选择企业时,";
content=content + "本基金将更关注如新能源利用等符合“十一五规划”的题材,重点投资于较高的投资效";
content=content + "率下持续成长的公司,为基金持有人提供可持续的价值增值。<br><br>";
content=content + " 网上交易现已全面支持建行卡、农行卡、兴业银行卡,您持以上银行卡可";
content=content + "直接登录网站(办理开户、申购等手续,网上申购免排队,费率0.6%。<br><br>";
content=content + " 财智分享,合赢人生!<br><br>";
content=content + " 基金管理有限公司<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: