java发送邮件

最近项目中需要用到java平台发送邮件,差了点资料,整理一下。

 

一、JavaMail

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

邮件传输的原理不得不提到SMTP协议:SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件

 

二、一个简单的发送邮件的例子:

 

package useful;

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

import javax.mail.AuthenticationFailedException;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
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 AjunBoys
 *
 */
public class SendEmailUseJavaMail {
	
	private String host;
	private String username;
	private String password;
	private String from;
	private String to;
	private String subject;
	private String content;
	
	public String getHost() {
		return host;
	}
	public void setHost(String host) {
		this.host = host;
	}
	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 getFrom() {
		return from;
	}
	public void setFrom(String from) {
		this.from = from;
	}
	public String getTo() {
		return to;
	}
	public void setTo(String to) {
		this.to = to;
	}
	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 SendEmailUseJavaMail(){
	
	}
	
	//发送邮件
	public boolean sendMail(){
					
		try{
			Properties props = new Properties();//存储连接参数
			props.put("mail.smtp.host", host);  //smtp主机
			props.put("mail.smtp.auth", "true");  //需要身份验证
	//		props.put("mail.smtp.port", "465");	//gamil stmp port:465

			
			Session session = Session.getInstance(props);//获取一个邮件session
			session.setDebug(true);
			MimeMessage message = new MimeMessage(session); //邮件会话新建一个邮件信息
			
			//检查邮件地址是否合法
			if(from == null || from ==""){
				throw new Exception("Error Email Address in From.");
			}
			if(to == null || to ==""){
				throw new Exception("Error Email Address in To.");
			}
			
			//设置源地址
			//message.setFrom(new InternetAddress(from)); //等价于下面两条代码
			InternetAddress addressFrom = new InternetAddress(from);
			message.setFrom(addressFrom);
			
			//设置目的地址
			InternetAddress addressTo = new InternetAddress(to);
			message.setRecipient(Message.RecipientType.TO, addressTo);
			message.setSubject(subject);
			//message.setText(content); //邮件正文
			
			Multipart mp = new MimeMultipart();//邮件内容
			MimeBodyPart mbpContent = new MimeBodyPart();
			mbpContent.setContent(content,"text/html");  //邮件格式
			
			//向MimeMessage添加代表正文(Multipart)
		    mp.addBodyPart(mbpContent);
            message.setContent(mp);
            message.setSentDate(new Date()); //设置发送的时间
            
            Transport transport = session.getTransport("smtp"); //设置邮件传输
            
            transport.connect((String)props.get("mail.smtp.host"), username, password); //连接主机
            
            transport.sendMessage(message, message.getRecipients(MimeMessage.RecipientType.TO)); //发送邮件
            
            System.out.println("Send Success !");
            
            transport.close(); //关闭传输
            
            return true;
		    
		}catch(AuthenticationFailedException e){
			e.printStackTrace();
			return false;
		} catch(MessagingException e){
			e.printStackTrace();
			return false;
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	
}

你可能感兴趣的:(java)