关于java发送email案例

1.先创建一个Email所用到的信息类:

package com.tan.test;

import java.util.Properties;

/**
 * 功能:邮箱信息类
 * @author TanZi
 * @time 2015-4-20上午10:35:47
 */
public class MailSenderInfo {

	//发送邮件的服务器验证需要的信息
	private String mailServerHost;  //服务器的IP地址
	private String mailServerPort;  //端口号
	//发送者的信息
	private String formAddress;  //发送者的地址
	private String userName;//  发送者的帐号
	private String password;//	发送者的pndc
	//接收者
	private String toAddress;//	接收者的地址
	//发送的主题
	private String subject;
	//发送的内容
	private String content;

	/**
	 * 功能:获得邮件会话属性
	 * @return
	 */
	public Properties getProperties(){
		Properties properties=new Properties();
		properties.put("mail.smtp.host", this.mailServerHost);  //主机地址
		properties.put("mail.smtp.port", this.mailServerPort);  //端口号
		properties.put("mail.smtp.auth", "true");            //设置发送授权认证
		return properties;
	}

	//------------------getter/setter-------------------
	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 getFormAddress() {
		return formAddress;
	}
	public void setFormAddress(String formAddress) {
		this.formAddress = formAddress;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getToAddress() {
		return toAddress;
	}
	public void setToAddress(String toAddress) {
		this.toAddress = toAddress;
	}
	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;
	}

}

2.创建继承、重写认证方法

package com.tan.test;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/**
 * 功能:身份验证类——邮箱帐户和密码的验证
 * @author TanZi
 * @time 2015-4-20上午10:52:17
 */
public class MyAuthenticator extends Authenticator{

	String username=null;
	String password=null;

	public MyAuthenticator(){	}

	public MyAuthenticator(String username,String passowrd){
		this.username=username;
		this.password=passowrd;
	}

	/**
	 * 用户名和密码验证
	 */
	public PasswordAuthentication getPasswordAuthentication(){
		return new PasswordAuthentication(username, password);
	}
}

3.编写发email发核心类(怎么装载数据。怎么发送)

package com.tan.test;

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

import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * 功能:邮件发送的核心类
 * @author TanZi
 * @time 2015-4-20上午11:02:26
 */
public class SimleMailSender {

	/**
	 * 功能:邮件发送的核心方法
	 * @param mailInfo  邮件信息类
	 * @return boolean
	 */
	public boolean sendHtmlMail(MailSenderInfo mailInfo){

		MyAuthenticator authenticator=new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());//身份验证
		Properties properties=mailInfo.getProperties();
		//根据邮件会话属性和验证器构造一个发送邮件的session
		Session sendMailSession=Session.getDefaultInstance(properties, authenticator);

		try {
			//定义发送邮件的主体
			Message mailMessage=new MimeMessage(sendMailSession);
			//创建发送者的地址
			Address fromAddress=new InternetAddress(mailInfo.getFormAddress());
			//设置邮件消息的发送者
			mailMessage.setFrom(fromAddress);
			//创建接受者的地址
			Address toAddress=new InternetAddress(mailInfo.getToAddress());
			//创建邮件消息的接受者
			mailMessage.setRecipient(Message.RecipientType.TO, toAddress);//BCC:密送..CC:抄送.. TO:直接发送

			//邮件的主题
			mailMessage.setSubject(mailInfo.getSubject());
			//设置邮件发送的时间
			mailMessage.setSentDate(new Date());
			//设置邮件消息的主要内容
		//	String mailContent=mailInfo.getContent();
			//创建一个容器
			Multipart maimPart=new MimeMultipart();
			//创建一个包含html内容的MimeBodyPart
			BodyPart html=new MimeBodyPart();
			//设置html的邮件内容
			html.setContent(mailInfo.getContent(),"text/html;charset=utf-8");
			maimPart.addBodyPart(html);
			//创建附件
			BodyPart attach=new MimeBodyPart();
			DataSource source=new FileDataSource("E:\\Code\\Movie\\images\\four.jpg");//加载要作为附件的文件
			attach.setDataHandler(new DataHandler(source));
			attach.setFileName("four.jpg");
			maimPart.addBodyPart(attach);

			//设置内容
			mailMessage.setContent(maimPart);
			//设置 发送html格式的邮件头信息
			MailcapCommandMap mc=(MailcapCommandMap) CommandMap.getDefaultCommandMap();
			 mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
		     mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
		     mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
		     mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
		     mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
		     CommandMap.setDefaultCommandMap(mc);
		     //发送文件
		     Transport.send(mailMessage);
		     return true;
		} catch (AddressException e) {

			e.printStackTrace();
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	     return false;
	}
}

4。测试类

package com.tan.test;

/**
 * 功能:
 * @author TanZi
 * @time 2015-4-20下午1:16:15
 */
public class TestMail {

	/**
	 * 功能:
	 * @param args
	 */
	public static void main(String[] args) {
MailSenderInfo mailInfo = new MailSenderInfo();
		System.out.println("");
		mailInfo.setMailServerHost("smtp.qq.com"); // 邮件服务器主机
		mailInfo.setMailServerPort("25"); // 服务器端口  SMTP:单单的邮件传输协议  端口:25

		mailInfo.setUserName("571868789"); // 发送者用户名
		mailInfo.setPassword("tanliu1234"); // 发送者密码
		mailInfo.setFormAddress("[email protected]"); //发送者地址

		//mailInfo.setToAddress("[email protected]"); // 接收者地址
		String toAddress = "[email protected]";
		mailInfo.setToAddress(toAddress);

		String subject = "TanZi-------text"; // 主题

		String  content = "<a  href='http://blog.csdn.net/u011707402' >";
		 content  += "<div style='width:650px;background-color:#DBDBFF;";
		 content  += "text-align:center;color:red;font-size:20px;border:0 solid red;'>";
		 content  +="<b>恭喜你收到我的信息<br />";
		 content  +="<a href='http://blog.csdn.net/u011707402'>坛子成长记学习知识</a><br />";
		 content  +="坛子";
		 content  +="</b><img width='100%' src='http://www.nipic.com/show/7364191.html' /></div></a>";

		mailInfo.setSubject(subject);
		mailInfo.setContent(content);

		SimleMailSender sms = new SimleMailSender();
		boolean flag = sms.sendHtmlMail(mailInfo); // 发送邮件
		if(flag){
			System.out.println("成功!");
		}else{
			System.out.println("失败!");
		}
	}

}

5.注意事项

  1. 发送邮件错误 454 Authentication failed, please open smtp flag first!

    ----(方法)在QQ邮箱的设置里面,找到账户-》POP3/IMAP/SMTP选择开启POP3/SMTP服务

  2. 535 Authentication failed(原因):帐号和密码错误
时间: 2024-09-30 15:22:35

关于java发送email案例的相关文章

java 发送 Email

private static void sendMail(String mail, String mailContext) { try { String context = FileUtil.getFileContent("lostpassEmail.html"); HtmlEmail email = new HtmlEmail(); email.setHostName("smtp.163.com"); email.setSmtpPort(25); email.se

java发送email

package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.Se

Java发送Email—使用org.apache.commons.mail

上篇文章介绍了自己手动的实现发送普通Email.HTML类型的Email以及带附件的Email.其实apache的commons项目下有个email子项目,它对JavaMail API进行了封装,用起来特变方便.下面就简单介绍. 1.    首先配置需要的jar包 需要将mail.jar和commons-email.jar添加到我们的CLASSPATH中即可,如下图: 2.    发送普通邮件 /** * 用org.apache.commons.mail发送普通邮件 * * @author wa

java发送email文件

1. 加入jar包 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.5.0-b01</version> </dependency> 2.编码如下: 方式1: import java.util.Date; import java.util.Properties; import javax.mai

java发送email(含代理方式,ssl方式,传统方式)

package spring.vhostall.com; import java.security.Security; import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.

使用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发送exchange邮件问题

最近工作中遇到一个问题,本来很简单的一个问题,困扰了我2周 具体:java发送会议邮件到exchange服务器 奇怪:系统有80多家客户,基本大半都有会议邮件的发送,不管是outlook,网易闪电邮,Foxmail另外wps邮箱都可以接收到会以邮件 只有exchange不能接收到会议邮件,收到的只是 BEGIN:VCALENDAR PRODID:-//Events Calendar//iCal4j 1.0//EN CALSCALE:GREGORIAN VERSION:2.0 METHOD:REQ

第19章-使用Spring发送Email

1 配置Spring发送邮件 Spring Email抽象的核心是MailSender接口.顾名思义,MailSender的实现能够通过连接Email服务器实现邮件发送的功能,如图19.1所示. 图19.1 Spring的MailSender接口是Spring Email抽象API的核心组件.它把Email发送给邮件服务器,由服务器进行邮件投递 Spring自带了一个MailSender的实现也就是JavaMailSenderImpl,它会使用JavaMail API来发送Email.Sprin

使用java发送电子邮件

经常在账号绑定邮箱或找回密码时,邮箱会收到一条验证邮件,好奇用代码该怎么发送邮件,看到了许多相关的博客,实现步骤都写的很详细,今天照着其他博客的步骤也确实实现了代码发送邮件,在这里重新记录下步骤,加深记忆. 一.科普 1. 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP协议.SMTP 是 Simple Mail Transfer Protocol 的