Java 邮件发送功能

本文介绍如何使用Java的javamail库实现电子邮件的发送,详细步骤包括配置SMTP协议、编写发送邮件的代码,并附带实际运行的例子。

电子邮件的发送需要遵从特定的协议,常用的电子邮件协议包括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,下载的:


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


2、创建如下工程:

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


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、执行代码测试


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


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


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

5、执行效果如下


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


package com.lccert.crm.chemistry.util; import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMail { private static SendMail instance = null; private SendMail() { } public static SendMail getInstance() { if (instance == null) { instance = new SendMail(); } return instance; } public void send() { try { String to[]={"tiwsonchen@163.com","tiwson@163.com"}; Properties p = new Properties(); //Properties p = System.getProperties(); p.put("mail.smtp.auth", "true"); p.put("mail.transport.protocol", "smtp"); p.put("mail.smtp.host", "smtp.163.com"); p.put("mail.smtp.port", "25"); //建立会话 Session session = Session.getInstance(p); Message msg = new MimeMessage(session); //建立信息 msg.setFrom(new InternetAddress("tiwson@163.com")); //发件人 String toList = getMailList(to); InternetAddress[] iaToList = new InternetAddress().parse(toList); msg.setRecipients(Message.RecipientType.TO,iaToList); //收件人 msg.setSentDate(new Date()); // 发送日期 msg.setSubject("javamail测试邮件"); // 主题 msg.setText("注意,这是测试程序发的,请不要回复!"); //内容 // 邮件服务器进行验证 Transport tran = session.getTransport("smtp"); tran.connect("smtp.163.com", "tiwson", "9041160"); // bluebit_cn是用户名,xiaohao是密码 tran.sendMessage(msg, msg.getAllRecipients()); // 发送 System.out.println("邮件发送成功"); } catch (Exception e) { e.printStackTrace(); } } private String getMailList(String[] mailArray){ StringBuffer toList = new StringBuffer(); int length = mailArray.length; if(mailArray!=null && length <2){ toList.append(mailArray[0]); }else{ for(int i=0;i<length;i++){ toList.append(mailArray[i]); if(i!=(length-1)){ toList.append(","); } } } return toList.toString(); } }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值