`
sd1992585
  • 浏览: 49564 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Exchange服务器邮件发送(javamail,无乱码,支持内网)

阅读更多
因为weblogic下javamail下的jar包会与weblogic自身提供jar冲突,所以Mail类不要import导包。还有需要确定你当前的jar包是最新版本的jar包,
spring提供jar会与mail.jar冲突,具体可以查看这位兄弟的http://zht1933.iteye.com/blog/807856,提供下载
package com.ats.task.mail;


import java.util.Date;   
import java.util.Properties;   


  

  
/**
 * 邮件发送类 
 * @author jeff
 *
 */
public class Mail{   
    private String host;   
    private String auth;   
    private String username;   
    private String domainUser;   
    private String password;
    private Constant c;
  
    public boolean send(String[] to, String[] cc, String[] bcc, String subject, String content) throws javax.mail.MessagingException {   
        Properties props = new Properties();   
        props.put("mail.smtp.host", host);   
        props.put("mail.smtp.auth", auth);   
        javax.mail.Session s = javax.mail.Session.getInstance(props);   
        //      s.setDebug(true);   
  
        javax.mail.internet.MimeMessage message = new javax.mail.internet.MimeMessage(s);   
  
        javax.mail.internet.InternetAddress from = new javax.mail.internet.InternetAddress(username);   
        message.setFrom(from);   
        javax.mail.internet.InternetAddress[] Toaddress = new javax.mail.internet.InternetAddress[to.length];   
        for (int i = 0; i < to.length; i++)   
            Toaddress[i] = new javax.mail.internet.InternetAddress(to[i]);   
        message.setRecipients(javax.mail.Message.RecipientType.TO, Toaddress);   
  
        if (cc != null) {   
        	javax.mail.internet.InternetAddress[] Ccaddress = new javax.mail.internet.InternetAddress[cc.length];   
            for (int i = 0; i < cc.length; i++)   
                Ccaddress[i] = new javax.mail.internet.InternetAddress(cc[i]);   
            message.setRecipients(javax.mail.Message.RecipientType.CC, Ccaddress);   
        }   
  
        if (bcc != null) {   
        	javax.mail.internet.InternetAddress[] Bccaddress = new javax.mail.internet.InternetAddress[bcc.length];   
            for (int i = 0; i < bcc.length; i++)   
                Bccaddress[i] = new javax.mail.internet.InternetAddress(bcc[i]);   
            message.setRecipients(javax.mail.Message.RecipientType.BCC, Bccaddress);   
        }   
        sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); 
        message.setSentDate(new Date());   
  
        javax.mail.BodyPart mdp = new javax.mail.internet.MimeBodyPart();   
        mdp.setHeader("Content-Transfer-Encoding","base64"); 
        mdp.setContent(content, "text/plain;charset=GBK");   
        javax.mail.Multipart mm = new javax.mail.internet.MimeMultipart();   
        mm.addBodyPart(mdp);   
        message.setContent(mm);   
        message.setSubject(subject); 
  
        message.saveChanges();   
        javax.mail.Transport transport = s.getTransport("smtp");   
        transport.connect(host, (null == domainUser) ? username : domainUser, password);   
        transport.sendMessage(message, message.getAllRecipients());   
        transport.close();   
        return true;   
    }   
  /*构造读取配置文件*/
    public Mail() {   
        super();
        c = c.getInstance();	
        this.host = c.getMailServer();   
        this.auth = "true";   
        this.domainUser =c.getMailCount();   
        this.username = c.getMailAddress();   
        this.password = c.getMailPassword();   
    }   
}

 邮件相关配置类:

package com.ats.task.mail;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

/**
 * 
 * @author jeff
 * 完成邮箱相关配置
 */
public class Constant { 
	private static Constant instance = null;
	 public static synchronized Constant getInstance() {
	  if(instance==null){
	   instance = new Constant();
	  }
	  return instance;
	 }

	private String mailAddress;//邮箱地址
	private String mailCount;  //邮箱用户名
	private String mailPassword;//邮箱密码
	private String mailServer;	//邮箱smtp服务器
	/**
	 *单态构造,读取文件邮箱配置信息 
	 */
	private Constant(){
		init();
	}
	private void init(){
		Properties p = new Properties();
		try {
			p.load(Constant.class.getResourceAsStream("/email.properties"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		mailAddress = p.getProperty("mailAddress");
		mailCount = p.getProperty("mailCount");
		mailPassword = p.getProperty("mailPassword");
		mailServer = p.getProperty("mailServer");
	}
	public String getMailAddress() {
		return mailAddress;
	}
	public void setMailAddress(String mailAddress) {
		this.mailAddress = mailAddress;
	}
	public String getMailCount() {
		return mailCount;
	}
	public void setMailCount(String mailCount) {
		this.mailCount = mailCount;
	}
	public String getMailPassword() {
		return mailPassword;
	}
	public void setMailPassword(String mailPassword) {
		this.mailPassword = mailPassword;
	}
	public String getMailServer() {
		return mailServer;
	}
	public void setMailServer(String mailServer) {
		this.mailServer = mailServer;
	}
	/*
	 * 测试
	 */
	public static void main(String[] args) {
		Constant c = Constant.getInstance();
		System.out.println(c.getMailAddress());
	}
	
	
} 

 配置文件为email.properties,具体配置如下:

mailAddress=发送邮箱名
mailCount=sino-life\\ATS (用户名,这里要注意,Exchage邮箱用户名需要 域//用户名)
mailPassword=密码
mailServer=SMTP地址,建议直接使用smtp IP地址,不要用域名,否则linx下会找不到smtp地址

 

分享到:
评论
4 楼 Hello_l 2014-09-12  
你好,最近也在做这个,可以加我qq:394272905 详细请教下吗?
3 楼 NIIT_zhu 2013-11-26  
您好,我们最近也要做一个基于Exchange 2010 的webmail系统,您方便留个联系方式请教一下吗?
我qq:496106920
2 楼 sd1992585 2013-05-17  
XiaoXiaoYang37790315 写道
确定支持外网么?我最近也在搞这个,内网没问题换成外网就有问题了,exchange的,服务器mail.petrochina.com.cn

外网需要转换,这个得问exchange的管理员给个转换的地址
1 楼 XiaoXiaoYang37790315 2013-05-07  
确定支持外网么?我最近也在搞这个,内网没问题换成外网就有问题了,exchange的,服务器mail.petrochina.com.cn

相关推荐

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    javamail 实现公司内网邮件发送

    用javaMail实现公司内网邮箱邮件发送,包括邮件附件,邮件发送人和抄送人

    Java通过Exchange协议发送和接收邮件

    微软官方提供的EWSJavaAPI_1.2.jar包是专门为Java开发者设计的,用于与Exchange服务器进行通讯,支持包括发送邮件、接收邮件在内的各种操作。 发送邮件的过程通常包括以下几个步骤: 1. 添加依赖:在项目中引入...

    Java邮件发送 javamail

    JavaMail API,作为Java平台上的邮件处理标准库,为开发人员提供了一个强大且灵活的工具集,用于发送、接收和管理电子邮件。本文将深入探讨Java邮件发送的关键概念,包括SMTP(Simple Mail Transfer Protocol)、...

    邮件发送javamail所需jar包.rar

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个压缩包"邮件发送javamail所需jar包.rar"包含了实现JavaMail功能所需的依赖库,它们是开发人员在构建邮件系统时必不可少的组件。 ...

    使用JAVAMail代发邮件

    这个类称为 MailInfo,包含了邮件的各种信息,例如邮件服务器的主机名和端口号、邮件发送者的地址、邮件接收者的地址、邮件主题、邮件内容、邮件附件等。 在 MailInfo 类中,我们定义了多个成员变量,用于存储邮件...

    关于用javamail发送邮件时,由于邮件服务器要SSL,解决办法

    在尝试使用JavaMail发送邮件时,如果邮件服务器要求使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议来确保通信安全,开发者可能会遇到一些挑战。本文将深入探讨如何解决这一问题,主要基于...

    JavaMail发送邮件的例子

    JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...

    发送邮件的javaMail包

    除了基本的邮件发送,JavaMail还提供了许多高级功能,比如SASL认证、SSL/TLS加密、邮件存储、POP3/IMAP接收邮件、以及对MIME标准的全面支持,使得开发者能够构建功能丰富的邮件应用。因此,JavaMail是Java开发者在...

    常规JavaMail 邮件发送实用类

    在Java编程领域,JavaMail API是一个非常重要的工具,它允许开发者通过编程方式发送电子邮件。"常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变...

    javamail发送邮件 主题乱码解决

    第90行,setSubject("")

    邮件发送,支持exchange类型 jar包

    在给定的"邮件发送,支持exchange类型 jar包"主题中,我们可以深入探讨如何使用Java进行邮件发送,特别是针对Exchange服务器。 首先,`SendMail.java`这个文件名暗示了一个Java类,该类可能是用来实现邮件发送功能...

    JavaMail发送邮件(文本、html、附件)

    JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...

    JavaMail邮件发送源码 非常简单

    JavaMail是一种在Java应用程序中发送和接收电子邮件的标准API,它为开发者提供了强大的功能,使得处理邮件变得简单而高效。在JavaMail中,我们主要利用 javax.mail 和 javax.mail.internet 这两个包中的类来实现邮件...

    邮件发送javamail

    邮件发送javamail

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

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

    java发送exchange邮件

    在Java编程环境中,发送Exchange邮件通常涉及到使用Exchange Web Services (EWS) API或者JavaMail API。EWS是一种基于SOAP协议的API,它允许程序与Microsoft Exchange Server进行交互,包括发送邮件、管理日历、获取...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    以上就是使用JavaMail API通过Gmail发送邮件的基本过程,无论是无附件还是有附件,主要区别在于是否创建和添加`MimeBodyPart`以及`MimeMultipart`。通过理解和应用这些概念,你可以灵活地构建满足需求的邮件系统。

    javamail邮件发送工具类

    JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...

    james和javamail实现邮件收发(带发送附件)

    对于邮件接收,JavaMail API同样提供了`Store`接口,可以连接到邮件服务器(如James)的邮箱,获取和处理新邮件。这通常涉及以下步骤: 1. **配置邮件存储**:与发送邮件类似,我们需要创建一个`Properties`对象,...

Global site tag (gtag.js) - Google Analytics