设为首页 加入收藏

TOP

Java使用代理发送邮件(一)
2014-11-24 14:12:41 来源: 作者: 【 】 浏览:4
Tags:Java 使用 代理 发送 邮件

最近用java写个发邮件的东东,然后打成jar包,jar包可以放在任何地方邮件正常发送


要求 :


1、网络正常的情况下,可以发送;


2、网络不正常的时候,需要使用内网连接到外网,使用代理发送邮件。


部分代码拿出来分享一下:


package com.zyuc.mail;


import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
import org.apache.log4j.Logger;
import com.zyuc.domParse.DomParseXml;
import com.zyuc.util.UtilTools;


/**
* 邮件发送
* @author wangxw
* 2011-10-26
*/
public class JmailConfig {

private static Logger logger = Logger.getLogger(JmailConfig.class);
private static Map map = new HashMap();
private static JmailFileRead jmailFileRead = new JmailFileRead();
public String Email_Text = new String();
private static JmailConfig mail = new JmailConfig();

/**
*构造函数 初始化参数信息
*/
public JmailConfig(){
//获得配置文件
String configPath = UtilTools.getPath()+File.separator+"JmailConfig.xml";
File file = new File(configPath);
//加载配置文件信息
if(file.exists()){
map = new DomParseXml().parseXml(configPath);
Email_Text = jmailFileRead.fileRead(map.get("Email_Text").toString());
}else{
logger.error("邮件配置文件未找到");
}
}

/**
* 邮件附件的添加
* @param multipart
* @param filePath
* @param fileName
* @param k
* @return boolean
*/
private boolean addMultipart(Multipart multipart, String filePath,
String fileName, int k) {
boolean flag = true;
try {
MimeBodyPart messageBodyPart = new MimeBodyPart();
if (k == 0) {
messageBodyPart.setText(Email_Text);
multipart.addBodyPart(messageBodyPart);
}
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filePath);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(fileName);
multipart.addBodyPart(messageBodyPart);
} catch (Exception e) {
flag = false;
logger.error("邮件附件的添加失败" + e.getMessage());
e.printStackTrace();
}
return flag;
}

/**
* 发送邮件信息配置
* @return boolean
*/
public boolean sendMail(){
boolean sendFlag = true;
final String username = map.get("Email_User").toString();
final String password = map.get("Email_Pswd").toString();

Session session;
//获得是否使用代理发送的标识
String Email_Proxy_Flag = map.get("Email_Proxy_Flag").toString();
if("1".equalsIgnoreCase(Email_Proxy_Flag)){
//若Email_Proxy_Flag==1则使用代理发送
try {
Properties props = System.getProperties();
props.put("mail.smtp.auth", "true");
props.setProperty("proxySet", "true");
props.setProperty("mail.stmp.host", map.get("Email_Host").toString());
props.setProperty("http.proxyhost",map.get("Email_Proxy_Host").toString());
props.setProperty("http.proxyport",map.get("Email_Proxy_Port").toString());

session = Session.getDefaultInstance(props,
new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(
username, password);
}
});
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(map.get("Email_From").toString()));

//多个接受者
String[] to = map.get("Email_To").toString().split(";");
if (to != null) {
InternetAddress[] toAddress = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++) {
toAddress[i] = new InternetAddress(to[i]);
}
message.add

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android应用之小球跟着手指动 下一篇C语言 字符指针和字符数组的区别

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: