`
googgoogle
  • 浏览: 65584 次
社区版块
存档分类
最新评论

java使用代理发送邮件

阅读更多

    [size=18px;]最近用java写个发邮件的东东,然后打成jar包,jar包可以放在任何地方邮件正常发送[/size]

[size=18px;]要求 :[/size]

[size=18px;]1、网络正常的情况下,可以发送;[/size]

[size=18px;]2、网络不正常的时候,需要使用内网连接到外网,使用代理发送邮件。[/size]

[size=18px;]部分代码拿出来分享一下:[/size]

[size=16px;]package com.zyuc.mail;[/size]

[size=16px;]import java.io.File;<br>
import java.util.HashMap;<br>
import java.util.Map;<br>
import java.util.Properties;<br>
import javax.activation.*;<br>
import javax.mail.*;<br>
import javax.mail.internet.*;<br>
import org.apache.log4j.Logger;<br>
import com.zyuc.domParse.DomParseXml;<br>
import com.zyuc.util.UtilTools;[/size]

[size=16px;]/**<br>
* 邮件发送<br>
* @author wangxw<br>
* 2011-10-26<br>
*/<br>
public class JmailConfig {<br><br>
private static Logger logger = Logger.getLogger(JmailConfig.class);<br>
private static Map map = new HashMap();<br>
private static JmailFileRead jmailFileRead = new JmailFileRead();<br>
public String Email_Text = new String();<br>
private static JmailConfig mail = new JmailConfig();<br><br>
/**<br>
*构造函数 初始化参数信息<br>
*/<br>
public JmailConfig(){<br>
//获得配置文件<br>
String configPath = UtilTools.getPath()+File.separator+"JmailConfig.xml";<br>
File file = new File(configPath);<br>
//加载配置文件信息<br>
if(file.exists()){<br>
map = new DomParseXml().parseXml(configPath);<br>
Email_Text = jmailFileRead.fileRead(map.get("Email_Text").toString()); <br>
}else{<br>
logger.error("邮件配置文件未找到");<br>
}<br>
}<br><br>
/**<br>
* 邮件附件的添加<br>
* @param multipart<br>
* @param filePath<br>
* @param fileName<br>
* @param k<br>
* @return boolean<br>
*/<br>
private boolean addMultipart(Multipart multipart, String filePath,<br>
String fileName, int k) {<br>
boolean flag = true;<br>
try {<br>
MimeBodyPart messageBodyPart = new MimeBodyPart();<br>
if (k == 0) {<br>
messageBodyPart.setText(Email_Text);<br>
multipart.addBodyPart(messageBodyPart);<br>
}<br>
messageBodyPart = new MimeBodyPart();<br>
DataSource source = new FileDataSource(filePath);<br>
messageBodyPart.setDataHandler(new DataHandler(source));<br>
messageBodyPart.setFileName(fileName);<br>
multipart.addBodyPart(messageBodyPart);<br>
} catch (Exception e) {<br>
flag = false;<br>
logger.error("邮件附件的添加失败" + e.getMessage());<br>
e.printStackTrace();<br>
}<br>
return flag;<br>
}<br><br>
/**<br>
* 发送邮件信息配置<br>
* @return boolean<br>
*/<br>
public boolean sendMail(){<br>
boolean sendFlag = true;<br>
final String username = map.get("Email_User").toString();<br>
final String password = map.get("Email_Pswd").toString();<br><br>
Session session;<br>
//获得是否使用代理发送的标识<br>
String Email_Proxy_Flag = map.get("Email_Proxy_Flag").toString();<br>
if("1".equalsIgnoreCase(Email_Proxy_Flag)){<br>
//若Email_Proxy_Flag==1则使用代理发送<br>
try {<br>
Properties props = System.getProperties();<br>
props.put("mail.smtp.auth", "true");<br>
props.setProperty("proxySet", "true");<br>
props.setProperty("mail.stmp.host", map.get("Email_Host").toString());<br>
props.setProperty("http.proxyhost",map.get("Email_Proxy_Host").toString());<br>
props.setProperty("http.proxyport",map.get("Email_Proxy_Port").toString());<br><br>
session = Session.getDefaultInstance(props,<br>
new Authenticator() {<br>
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {<br>
return new javax.mail.PasswordAuthentication(<br>
username, password);<br>
}<br>
});<br>
MimeMessage message = new MimeMessage(session);<br>
message.setFrom(new InternetAddress(map.get("Email_From").toString()));<br><br>
//多个接受者<br>
String[] to = map.get("Email_To").toString().split(";");<br>
if (to != null) {<br>
InternetAddress[] toAddress = new InternetAddress[to.length];<br>
for (int i = 0; i < to.length; i++) {<br>
toAddress[i] = new InternetAddress(to[i]);<br>
}<br>
message.addRecipients(Message.RecipientType.TO, toAddress);<br>
}<br><br>
//多个抄送者<br>
String[] cc = map.get("Email_Cc").toString().split(";");<br>
if (null != cc) {<br>
InternetAddress[] ccAddress = new InternetAddress[cc.length];<br>
for (int j = 0; j < cc.length; j++) {<br>
ccAddress[j] = new InternetAddress(cc[j]);<br>
}<br>
message.addRecipients(Message.RecipientType.CC, ccAddress);<br>
}<br>
message.setSubject(map.get("Email_Subject").toString());<br><br><br>
//附件功能<br>
Multipart multipart = new MimeMultipart();<br>
String[] filepath = map.get("FilePath").toString().split(";");<br>
String[] attachName = map.get("AttachName").toString().split(";");<br>
if (null != filepath) {<br>
for (int k = 0; k < filepath.length; k++) {<br>
addMultipart(multipart, filepath[k], attachName[k], k);<br>
}<br>
} else if (null == filepath) {<br>
message.setText(Email_Text);<br>
}<br>
message.setContent(multipart);<br><br>
Transport transport = session.getTransport("smtp");<br>
transport.connect(map.get("Email_Host").toString(), username, password);<br>
transport.sendMessage(message, message.getAllRecipients());<br>
transport.close();<br>
} catch (Exception e) {<br>
sendFlag = false;<br>
logger.error("使用代理发送邮件出错" + e.getMessage());<br>
e.printStackTrace();<br>
}<br>
}else{<br>
//若Email_Proxy_Flag!=1则不使用代理发送<br>
try {<br>
Properties props = System.getProperties();<br>
props.put("mail.smtp.auth", "true");<br>
props.setProperty("mail.stmp.host", map.get("Email_Host").toString());<br><br>
session = Session.getDefaultInstance(props,<br>
new Authenticator() {<br>
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {<br>
return new javax.mail.PasswordAuthentication(<br>
username, password);<br>
}<br>
});<br>
MimeMessage message = new MimeMessage(session);<br>
message.setFrom(new InternetAddress(map.get("Email_From").toString()));<br><br>
//多个接收者<br>
String[] to = map.get("Email_To").toString().split(";");<br>
if (to != null) {<br>
InternetAddress[] toAddress = new InternetAddress[to.length];<br>
for (int i = 0; i < to.length; i++) {<br>
toAddress[i] = new InternetAddress(to[i]);<br>
}<br>
message.addRecipients(Message.RecipientType.TO, toAddress);<br>
}<br><br>
//多个抄送者<br>
String[] cc = map.get("Email_Cc").toString().split(";");<br>
if (null != cc &amp;&amp; cc.length > 0) {<br>
InternetAddress[] ccAddress = new InternetAddress[cc.length];<br>
for (int j = 0; j < cc.length; j++) {<br>
ccAddress[j] = new InternetAddress(cc[j]);<br>
}<br>
message.addRecipients(Message.RecipientType.CC, ccAddress);<br>
}<br>
message.setSubject(map.get("Email_Subject").toString());<br><br>
//附件功能<br>
Multipart multipart = new MimeMultipart();<br>
String[] filepath = map.get("FilePath").toString().split(";");<br>
String[] attachName = map.get("AttachName").toString().split(";");<br>
if (null != filepath &amp;&amp; filepath.length > 0 &amp;&amp; attachName.length > 0 &amp;&amp; filepath.length == attachName.length) {<br>
for (int k = 0; k < filepath.length; k++) {<br>
addMultipart(multipart, filepath[k], attachName[k], k);<br>
}<br>
} else if (null == filepath) {<br>
message.setText(Email_Text);<br>
}<br>
message.setContent(multipart);<br><br>
Transport transport = session.getTransport("smtp");<br>
transport.connect(map.get("Email_Host").toString(), username, password);<br>
transport.sendMessage(message, message.getAllRecipients());<br>
transport.close();<br>
} catch (Exception e) {<br>
sendFlag = false;<br>
logger.error("发送邮件出错" + e.getMessage());<br>
e.printStackTrace();<br>
}<br>
}<br>
return sendFlag;<br>
}<br><br>
public String returnMessage(){<br>
boolean flag = mail.sendMail();<br>
StringBuffer sb = new StringBuffer();<br>
if(flag){<br>
sb.append("\n").append("邮件发送已成功").append("\t").append("\n");<br>
sb.append("邮件发送者:" + map.get("Email_From").toString()).append("\t").append("\n");<br>
sb.append("邮件发送至:" + map.get("Email_To").toString()).append("\t").append("\n");<br>
sb.append("邮件抄送给:" + map.get("Email_Cc").toString()).append("\t").append("\n");<br>
sb.append("邮件正文为:" + map.get("Email_Text").toString()).append("\t").append("\n");<br>
sb.append("发送时间是:" + UtilTools.getDate()).append("\t").append("\n");<br>
}else{<br>
sb.append("\n").append("邮件发送失败").append("\t").append("\n");<br>
sb.append("发送时间是:" + UtilTools.getDate()).append("\t").append("\n");<br>
}<br>
return sb.toString();<br>
}<br><br>
public static void main(String args[]) {<br>
logger.info("===============开始发送=================");<br>
logger.info(mail.returnMessage());<br>
logger.info("===============发送结束=================");<br>
}<br>
}<br>[/size]



 
0
1
分享到:
评论

相关推荐

    Java socket 代理邮件发送程序

    Java socket 代理邮件发送程序,测试无问题,才敢上传!

    Java开发的邮件代理服务器

    3. 发件:当用户通过代理服务器发送邮件时,服务器会使用SMTP向目标邮件服务器发送邮件。JavaMail API同样在发送邮件时起到关键作用,它允许设置邮件头信息(如发件人、收件人、主题等)、添加附件,以及选择适当的...

    利用Java并配置Foxmail发送邮箱(携带附件)

    本教程将深入探讨如何使用Java来配置Foxmail发送带有附件的邮件。首先,我们需要理解Java Mail API,它是Java中用于处理邮件的核心库。 Java Mail API提供了处理邮件的所有必要工具,包括创建、读取、发送和管理...

    java邮件发送例子 apache email demo

    在这个例子中,我们将深入探讨如何使用Apache Commons Email库在Java中实现邮件发送。 首先,你需要在项目中引入Apache Commons Email的依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...

    socks5代理配置及发送邮件.rar

    文档详细描述,linux不通外网的情况下,通过在另一台通外网的服务器搭建socks5代理服务,不通外网的服务器通过socks5代理,成功向外网发送邮件的功能。

    Java邮件代理 源码

    Java邮件代理是一个用于处理电子邮件的程序,它使用Java编程语言实现。邮件代理可以在发送或接收邮件的过程中执行各种操作,如过滤、转发、存储或者提供访问邮件的接口。在这个"Java邮件代理 源码"中,我们可以深入...

    spring mail通过代理发送邮件

    标题中的“spring mail通过代理发送邮件”指的是使用Spring框架中的JavaMailSender接口和相关的支持类,通过设置代理服务器来发送电子邮件。在某些网络环境中,直接访问SMTP服务器可能会受到限制,这时就需要通过...

    java发送邮件的源码实例

    这个实例是关于如何使用163邮箱作为代理来发送邮件的具体代码示例,包含了所有必要的依赖库。 首先,我们需要了解JavaMail API。JavaMail API是Java平台上的一个标准API,它提供了一组接口和类,用于处理邮件服务器...

    EWSJava提供Java中发送Exchange邮件的API

    ews-java-api 是用来访问 Exchange Web 服务的 Java 客户端库,API 支持 Office 365 Exchange Online。 ============================================ 其实资源是这位朋友的, 我这边只是把jar包收集齐全了,可以...

    Java发送邮件

    不用再为发邮件一堆代码而痛苦了 介绍一下具体用法: 1 调用Email配置初始化方法: SendEmailUtil initEmailPorxy &quot;smtp&quot; &quot;smtp 163 com&quot; &quot;yannannan2012@163 com&quot; &quot;password&...

    Java Mail demo (仅发送邮件)

    Java Mail 提供了设置代理的能力,你可以在代码中指定代理服务器的地址和端口,以便顺利发送邮件。 下面是一个简化的Java Mail发送邮件的步骤,展示了一些关键API的使用: 1. 引入Java Mail依赖:首先确保项目中...

    java邮件发送

    在Java中,我们通常使用`javax.mail`和`javax.mail.internet`这两个包来实现SMTP邮件的发送。首先,我们需要配置SMTP服务器的相关属性,如主机名、端口号、用户名和密码。这些信息可以通过`Properties`对象来设置。...

    基于java的简单socket邮件发送

    在Java中,我们需要遵循SMTP命令的规范来与服务器交互,例如,发送"HELO"命令来初始化会话,"MAIL FROM:"指定发件人,"RCPT TO:"指定收件人,最后是"DATA"命令来发送邮件内容。 4. **关闭连接**:完成邮件发送后,...

    lotus domnio java代理传值

    在Lotus Domino开发环境中,Java代理是用于执行服务器端任务的重要工具,它们可以自动化许多功能,如处理数据、发送邮件等。"lotus domnio java代理传值"这个主题主要涉及如何在Java代码中创建和使用代理,并在代理...

    SMTP与JMAIL 的邮件收发代理

    例如,可以使用`JMail.sendMail()`方法,传入发件人、收件人、主题和邮件正文等参数,JMail会处理与SMTP服务器的交互,自动完成邮件发送。同时,JMail还支持附件、HTML邮件、多部分消息等特性。 POP3(Post Office ...

    飞翔263邮件发送系统站长专用版 v1.0

    通过一定的加密或者代理机制,系统可以在不暴露真实邮箱地址的情况下,接收和发送邮件。这样既保护了站长的隐私,减少了垃圾邮件的可能性,又不会阻碍用户通过邮件与站长进行联系。这对于维护网站的正常运营,建立...

    javamail通过imap协议收取邮件(Exchange2007)

    JavaMail是一种开源的Java库,它允许开发人员在Java应用程序中发送和接收电子邮件。IMAP(Internet Message Access Protocol)是一种标准的邮件访问协议,用于从邮件服务器检索邮件。Exchange 2007是微软的企业级...

Global site tag (gtag.js) - Google Analytics