java email 发送

邮件服务是一般系统的基本功能,本例使用163免费邮箱发送

1.邮件信息类(MailSenderInfo )

package sendEmail.email;

import java.util.Properties;

/**
 * 邮件信息设置
 * @author Administrator
 *
 */
public class MailSenderInfo {

	private String mailServerHost ; //发送邮件主机
	private String mailServerPort ; //发送端口

	private String fromAddress ; //邮件发送者的地址(邮箱)
	private String toAddress ; //接收者的地址(邮箱)

	//登录邮件发送服务器的用户名和密码
	private String userName ;
	private String passwrod ;

	//是否需要身份验证
	private boolean validate = false ;

	//邮件主题
	private String subject ;

	//邮件内容
	private String content ;

	//邮件附件
	private String[] attachFileNames ;

	/*
	 * 获取邮件会话属性
	 */
	public Properties getProperties(){
		Properties p = new Properties();
		p.put("mail.smtp.host", this.mailServerHost);
//		p.put("mail.smtp.port", this.mailServerPort);
		p.put("mail.sender.username", userName);
		p.put("mail.sender.password", passwrod);

		return p ;
	}

	public String getMailServerHost() {
		return mailServerHost;
	}

	public void setMailServerHost(String mailServerHost) {
		this.mailServerHost = mailServerHost;
	}

	public String getMailServerPort() {
		return mailServerPort;
	}

	public void setMailServerPort(String mailServerPort) {
		this.mailServerPort = mailServerPort;
	}

	public String getFromAddress() {
		return fromAddress;
	}

	public void setFromAddress(String fromAddress) {
		this.fromAddress = fromAddress;
	}

	public String getToAddress() {
		return toAddress;
	}

	public void setToAddress(String toAddress) {
		this.toAddress = toAddress;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPasswrod() {
		return passwrod;
	}

	public void setPasswrod(String passwrod) {
		this.passwrod = passwrod;
	}

	public boolean isValidate() {
		return validate;
	}

	public void setValidate(boolean validate) {
		this.validate = validate;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String[] getAttachFileNames() {
		return attachFileNames;
	}

	public void setAttachFileNames(String[] attachFileNames) {
		this.attachFileNames = attachFileNames;
	}

}

 2. 服务类(SimpleMailSender) 

package sendEmail.email;

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

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
 * 发送邮件格式设置
 * @author Administrator
 *
 */
public class SimpleMailSender {

	/**
	  * 以(text)(文本格)式发送邮件
	  * @param mailInfo 待发送的邮件的信息
	  */
	public boolean sendTextMail(MailSenderInfo mailInfo){
		Properties pro = mailInfo.getProperties();
		Session sendMailSession = Session.getInstance(pro) ;
		try {
		      // 根据session创建一个邮件消息
		      Message mailMessage = new MimeMessage(sendMailSession);
		      // 创建邮件发送者地址
		      Address from = new InternetAddress(mailInfo.getFromAddress());
		      // 设置邮件消息的发送者
		      mailMessage.setFrom(from);
		      // 创建邮件的接收者地址,并设置到邮件消息中
		      Address to = new InternetAddress(mailInfo.getToAddress());
		      mailMessage.setRecipient(Message.RecipientType.TO,to);
		      // 设置邮件消息的主题
		      mailMessage.setSubject(mailInfo.getSubject());
		      // 设置邮件消息发送的时间
		      mailMessage.setSentDate(new Date());
		      // 设置邮件消息的主要内容
		      String mailContent = mailInfo.getContent();
		      mailMessage.setText(mailContent);
		      // 发送邮件
		      mailMessage.saveChanges();
		      Transport transport = sendMailSession.getTransport("smtp");
		      transport.connect(mailInfo.getMailServerHost(), mailInfo.getUserName(), mailInfo.getPasswrod());
		      transport.sendMessage(mailMessage,mailMessage.getAllRecipients());
		      return true;    

		      } catch (MessagingException ex) {
		          ex.printStackTrace();
		      }
	    	return false;
	}

/**
* 以HTML格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
	public static boolean sendHtmlMail(MailSenderInfo mailInfo){    

		 Properties pro = mailInfo.getProperties();
		 // 根据邮件会话属性和密码验证器构造一个发送邮件的session
		 Session sendMailSession = Session.getDefaultInstance(pro);
		 try {
		 // 根据session创建一个邮件消息
		 Message mailMessage = new MimeMessage(sendMailSession);
		 // 创建邮件发送者地址
		 Address from = new InternetAddress(mailInfo.getFromAddress());
		 // 设置邮件消息的发送者
		 mailMessage.setFrom(from);
		 // 创建邮件的接收者地址,并设置到邮件消息中
		 Address to = new InternetAddress(mailInfo.getToAddress());
		 // Message.RecipientType.TO属性表示接收者的类型为TO
		 mailMessage.setRecipient(Message.RecipientType.TO,to);
		 // 设置邮件消息的主题
		 mailMessage.setSubject(mailInfo.getSubject());
		 // 设置邮件消息发送的时间
		 mailMessage.setSentDate(new Date());
		 // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
		 Multipart mainPart = new MimeMultipart();
		 // 创建一个包含HTML内容的MimeBodyPart
		 BodyPart html = new MimeBodyPart();
		 // 设置HTML内容
		 html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
		 mainPart.addBodyPart(html);
		 // 将MiniMultipart对象设置为邮件内容
		 mailMessage.setContent(mainPart);
		 // 发送邮件
		 mailMessage.saveChanges();
	     Transport transport = sendMailSession.getTransport("smtp");
	     transport.connect(mailInfo.getMailServerHost(), mailInfo.getUserName(), mailInfo.getPasswrod());
	     transport.sendMessage(mailMessage,mailMessage.getAllRecipients());
		 return true;
		 } catch (MessagingException ex) {
		     ex.printStackTrace();
		 }
		 return false;
	}
}

  3.测试类(MailTest)

package sendEmail.email;
/**
 * 测试类
 * @author Administrator
 *
 */
public class MailTest {

	public static void main(String[] args) {
		//设置邮件
		try {
			MailSenderInfo mainInfo = new MailSenderInfo();
			mainInfo.setMailServerHost("smtp.163.com");
			mainInfo.setValidate(true);
			mainInfo.setUserName("**************");
			mainInfo.setPasswrod("********");
			mainInfo.setFromAddress("********");
			mainInfo.setToAddress("********");
			mainInfo.setSubject("lalalala");
			mainInfo.setContent("----");
			SimpleMailSender.sendHtmlMail(mainInfo);//发送文体格式
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

  注意:

mainInfo.setPasswrod("********"); 不是登录163邮箱的密码,是163邮箱授权码。
时间: 2024-10-14 05:02:08

java email 发送的相关文章

java email发送

今天自己封装了email发送,做了一个对外的接口,目前支持text/html类型,打算明天支持直接文字类型以及html文件类型,先上传目前的封装代码.(2016/8/29). 我在写这段代码的时候出现了正文乱码现象,调整了一个小时也没有找出问题,换成英文可以正常发送,但是里面包含中文就是乱码并且时而发送邮件失败.但是调整一个小时后自己突然好了,无论我改什么编码类型都能正常解码,我对照了原来自己的代码也是一摸一样,我对此百思不得其解,目前也没有发现问题. 我是maven管理项目,所以在pom.xm

java email发送(附件中文的处理)

这里使用的是commons-email-1.3.2.jar进行的开发,自认为这是简单的邮件发送. package com.yt.base.common; import java.io.UnsupportedEncodingException; import javax.mail.internet.MimeUtility; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.Emai

使用Java程序发送Email

    目前很多大型的网站忘记登录密码常见的一种形式是使用邮箱找回密码  最近做项目也有这个需求  现在总结一下  以便以后查看 使用到的包有 mailapi.jar smtp.jar   封装发送邮件的实体 package com.tes; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mai

解决java mail发送TXT附件被直接显示在正文中的问题

这两天遇到一个问题,关于使用java mail发送邮件的问题. 详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀名,那么在我的qq邮箱中显示正常.可是假设把附件的后缀名改为txt之后,就变成把附件中的内容直接显示在邮件正文中了.而我原来设置的邮件正文则不在了. 我的代码是这样写的: 加入附件: public void addAttachment(String filePath, String fileName

Java邮件发送与屏幕截屏

前几天七夕情人节孤独寂寞的程序猿闲来没事,花了一两个小时写了个小Demo主要实现Java的Mail发送功能和桌面截屏功能. 首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识. 一.Java  SendMail邮件发送 首先让我们来看看邮件发送的原理图: JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook.foxmail功能类似) * JavaMail开发需要类库 javamail API

新版本Java邮件发送类

之前曾经做过几个邮件发送类,有兴趣可以查阅前面的帖子. 使用过程中,发现一些不便之处,并作出了改进,将改进后的版本发布如下: 基类及其附属类共三个:(下载地址:http://pan.baidu.com/s/1bn1VkUN) import java.io.File; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; impo

Java邮件发送

package com.expai.test; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; i

JAVA邮件发送的简单实现

JAVA邮件发送的简单实现 JAVA邮件发送的简单实现 JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件.这一机制被广泛的用在注册激活和垃圾邮件的发送等方面. JavaMail可以到http://www.oracle.com/technetwork/java/javamail/index-138643.html进行下载,并将mail.jar添加到classpath即可.

java邮件发送(含附件)

1. [代码]java邮件发送(含附件)疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:1.邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)emailsmtp=smtp.qq.com[email protected]emailpass=******2.读取配置文件的类文件(ReadPropertity.java)import java.io.IOException;import java.util.Properties;publ