电子邮件的发送需要遵从特定的协议,常用的电子邮件协议包括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、成功收到的邮件效果图如下: