电子邮件的发送需要遵从特定的协议,常用的电子邮件协议包括SMTP、POP3、IMAP,其中邮件的创建和发送用SMTP协议即可。SMTP是Simple Mail TransferProtocol的简称,即简单邮件传输协议。

(1)Java 版本

利用javamail 来完成Java的邮箱发送:

1、准备项目所需的Jar包

下载所需的javamail的jar包,这里去oracle给出的下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.5-oth-JPR,下载的:


java 判断邮件是否发送成功 java发送邮件功能_Java


解压后,只需将下面圈出的这个jar包引入项目即可:


java 判断邮件是否发送成功 java发送邮件功能_jar包_02


2、创建如下工程:

注意:要将mail.jar包build path到项目的路径下。


java 判断邮件是否发送成功 java发送邮件功能_java_03


3、编写代码

public class SendEmail {
	public static final String SEND_EMAIL_USER_NAME = "timchen525";
	public static final String SEND_EMAIL_ACCOUNT = "timchen525@163.com";
	public static final String SEND_EMAIL_PASSWD = "********";
	public static final String SEND_EMAIL_SMTP_HOST = "smtp.163.com";
	public static final String RECE_EMAIL_ACCOUNT = "chenjt5@mail2.sysu.edu.cn";

	public static void main(String[] args) throws UnsupportedEncodingException, MessagingException {
		Properties props = new Properties();  
		props.setProperty("mail.transport.protocol", "smtp");
		props.setProperty("mail.smtp.host", SEND_EMAIL_SMTP_HOST);
		props.setProperty("mail.smtp.auth", "true");
		
		SimpleAuthenticator myauth = new SimpleAuthenticator(SEND_EMAIL_USER_NAME, SEND_EMAIL_PASSWD);
		Session session = Session.getDefaultInstance(props, myauth); 
		session.setDebug(true);
		
		MimeMessage message = createMimeMessage(session, SEND_EMAIL_ACCOUNT, RECE_EMAIL_ACCOUNT);
		
		Transport transport = session.getTransport();
		transport.connect(SEND_EMAIL_ACCOUNT, SEND_EMAIL_PASSWD);
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();
	}
	
	public static MimeMessage createMimeMessage(Session session,final String sendMail,final String receiveMail) throws UnsupportedEncodingException, MessagingException{
		//1、创建一封邮件
		MimeMessage message = new MimeMessage(session);
		//2、From:发件人
		message.setFrom(new InternetAddress(sendMail, "timchen525", "UTF-8"));
		//3、To:收件人
		message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "你好", "UTF-8"));
		//4、Subject:邮件主题
		message.setSubject("哈哈,你好梅妃", "UTF-8");
		//5、Content:邮件正文(可以用html标签)
		message.setContent("这是梅妃里面的内容", "text/html;charset=UTF-8");
		//6、设置发件时间
		message.setSentDate(new Date());
		//7、保存设置
		message.saveChanges();
		return message;
	}
}

4、执行代码测试


java 判断邮件是否发送成功 java发送邮件功能_jar包_04


报连接有问题,这是因为我这台机器上的网络被限制的原因。因此,通过另一台服务器运行命令行进行测试。将我们编写的代码export为jar,并存放在lib目录下,如下:


java 判断邮件是否发送成功 java发送邮件功能_Java_05


在装有Java环境的Linux服务器上,执行如下命令:


java 判断邮件是否发送成功 java发送邮件功能_java 判断邮件是否发送成功_06


注意:这里指定了-classpath 在lib目录下的具体的类中的main方法。

5、执行效果如下


java 判断邮件是否发送成功 java发送邮件功能_java 判断邮件是否发送成功_07


6、成功收到的邮件效果图如下:


java 判断邮件是否发送成功 java发送邮件功能_jar包_08