java使用代理发送邮件
来源:互联网 发布:qq大数据 编辑:程序博客网 时间:2024/06/05 04:35
最近用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.addRecipients(Message.RecipientType.TO, toAddress);
}
//多个抄送者
String[] cc = map.get("Email_Cc").toString().split(";");
if (null != cc) {
InternetAddress[] ccAddress = new InternetAddress[cc.length];
for (int j = 0; j < cc.length; j++) {
ccAddress[j] = new InternetAddress(cc[j]);
}
message.addRecipients(Message.RecipientType.CC, ccAddress);
}
message.setSubject(map.get("Email_Subject").toString());
//附件功能
Multipart multipart = new MimeMultipart();
String[] filepath = map.get("FilePath").toString().split(";");
String[] attachName = map.get("AttachName").toString().split(";");
if (null != filepath) {
for (int k = 0; k < filepath.length; k++) {
addMultipart(multipart, filepath[k], attachName[k], k);
}
} else if (null == filepath) {
message.setText(Email_Text);
}
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect(map.get("Email_Host").toString(), username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
sendFlag = false;
logger.error("使用代理发送邮件出错" + e.getMessage());
e.printStackTrace();
}
}else{
//若Email_Proxy_Flag!=1则不使用代理发送
try {
Properties props = System.getProperties();
props.put("mail.smtp.auth", "true");
props.setProperty("mail.stmp.host", map.get("Email_Host").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.addRecipients(Message.RecipientType.TO, toAddress);
}
//多个抄送者
String[] cc = map.get("Email_Cc").toString().split(";");
if (null != cc && cc.length > 0) {
InternetAddress[] ccAddress = new InternetAddress[cc.length];
for (int j = 0; j < cc.length; j++) {
ccAddress[j] = new InternetAddress(cc[j]);
}
message.addRecipients(Message.RecipientType.CC, ccAddress);
}
message.setSubject(map.get("Email_Subject").toString());
//附件功能
Multipart multipart = new MimeMultipart();
String[] filepath = map.get("FilePath").toString().split(";");
String[] attachName = map.get("AttachName").toString().split(";");
if (null != filepath && filepath.length > 0 && attachName.length > 0 && filepath.length == attachName.length) {
for (int k = 0; k < filepath.length; k++) {
addMultipart(multipart, filepath[k], attachName[k], k);
}
} else if (null == filepath) {
message.setText(Email_Text);
}
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect(map.get("Email_Host").toString(), username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
sendFlag = false;
logger.error("发送邮件出错" + e.getMessage());
e.printStackTrace();
}
}
return sendFlag;
}
public String returnMessage(){
boolean flag = mail.sendMail();
StringBuffer sb = new StringBuffer();
if(flag){
sb.append("\n").append("邮件发送已成功").append("\t").append("\n");
sb.append("邮件发送者:" + map.get("Email_From").toString()).append("\t").append("\n");
sb.append("邮件发送至:" + map.get("Email_To").toString()).append("\t").append("\n");
sb.append("邮件抄送给:" + map.get("Email_Cc").toString()).append("\t").append("\n");
sb.append("邮件正文为:" + map.get("Email_Text").toString()).append("\t").append("\n");
sb.append("发送时间是:" + UtilTools.getDate()).append("\t").append("\n");
}else{
sb.append("\n").append("邮件发送失败").append("\t").append("\n");
sb.append("发送时间是:" + UtilTools.getDate()).append("\t").append("\n");
}
return sb.toString();
}
public static void main(String args[]) {
logger.info("===============开始发送=================");
logger.info(mail.returnMessage());
logger.info("===============发送结束=================");
}
}
- java使用代理发送邮件
- 使用java发送邮件
- 使用java发送邮件
- 使用java发送邮件
- 使用Java 发送邮件
- 使用Java发送邮件
- 使用Java发送邮件
- 使用java发送邮件
- java mail 通过代理发邮件或直接发送邮件
- java mail 通过代理发邮件或直接发送邮件
- java 使用javamail发送邮件
- 使用java mail 发送邮件
- 使用Java Mail发送邮件
- java 使用 mail 发送邮件
- 使用Java Mail发送邮件
- 使用Java Mail发送邮件
- JAVA 使用QQ发送邮件
- 使用JAVA 代码发送邮件
- 在Ubuntu上为Android系统编写Linux内核驱动程序
- 程序的装载和链接
- 常见表单验证
- 初识函数
- 关于Apache与 Tomcat的集群配置
- java使用代理发送邮件
- DAO层究竟是什么
- 笔记本安装MeeGo系统教程
- 想进入黑马程序员——传智播客学习
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connecti...
- 把字符串转换成整数
- Codeforces Beta Round #69 (Div. 2 Only) E树型DP 一树,每个结点有虫子,一次只能吃一只,不能停留,问从根结点出发再回到根结点最多能吃多少只虫子
- 杭电 1233 最小生成树 kruskal()算法
- 最新被动式DLL提权工具Ws2Help.dll