首先,需要各位去java官网下载JavaMail mail.jar 和JAF activaton.jar,本程序使用的分别是1.4.5和1.1.1版本,在这里也给大家贴上链接,点击打开链接
接下来大家看代码:
// 需要用户名密码邮件发送实例 // 文件名 SendQQEmail.java // 本实例以QQ邮箱为例,你需要在qq后台设置 import java.security.GeneralSecurityException; import java.util.Properties; import java.util.Scanner; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import com.sun.mail.util.MailSSLSocketFactory; public class SendQQEmail { public static void main(String[] args) { System.out.println("请输入你的QQ号:"); Scanner s = new Scanner(System.in); String toEmail = s.next(); String toPassword = "xxxxxxxxxxxx"; // 打开QQEmail设置下的POP3/STMP服务,获取对应密码,自行填入 // 收件人电子邮箱 String to = toEmail + "@qq.com"; // 发件人电子邮箱 String from = to; // 指定发送邮件的主机为 smtp.qq.com String host = "smtp.qq.com"; // QQ 邮件服务器 // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可 MailSSLSocketFactory sf; try { sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 获取默认session对象 Session session = Session.getDefaultInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(toEmail, toPassword); // 发件人邮件用户名、密码 } }); try { // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress( to)); // Set Subject: 头部头字段 message.setSubject("This is the Subject Line!"); // 设置消息体 message.setText("This is actual message"); // 发送消息 Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } }
除了发送简单文本之外还可以发送Html,文件。
只需要将上述代码中的:
// 设置消息体 message.setText("This is actual message");改成:
// 发送 HTML 消息, 可以插入html标签 message.setContent("<h1>This is actual message</h1>", "text/html");
或者改成:
//发送文件
// 创建消息部分
BodyPart messageBodyPart = new MimeBodyPart();
// 消息
messageBodyPart.setText("This is message body");
// 创建多重消息
Multipart multipart = new MimeMultipart();
// 设置文本消息部分
multipart.addBodyPart(messageBodyPart);
// 附件部分
messageBodyPart = new MimeBodyPart();
String filename = "file.txt";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
// 发送完整消息
message.setContent(multipart);