1、什么是java mail
JAVA MAIL是利用现有的邮件账户发送邮件的工具,通过JAVA Mail的操控,让程序自动的使用设置的邮箱发送邮件。
这一机制被广泛的用在注册激活和垃圾邮件的发送等方面。
2、邮件发送的大致过程
1、构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。
此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。
2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。
3、通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。
Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。
4、构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。
5、使用javax.mail.Transport工具类发送邮件。
3、准备工作
下载JavaMail jar包,导入工程。
http://www.oracle.com/technetwork/java/javamail/index-138643.html
4、案例代码
MyEmailAutherticator.java
import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class MyEmailAutherticator extends Authenticator { //用户名(登录邮箱) private String username; //密码 private String password; public MyEmailAutherticator() { super(); } //初始化邮箱和密码 public MyEmailAutherticator(String username, String password) { this.username = username; this.password = password; } //用作登录校验,以确保对该邮箱有发送邮件的权利 public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } //set and get method 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; } }
Mail.java
import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.SendFailedException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class Mail { //发送邮件的帐号和密码 private String username="[email protected]"; private String password="xxxxxx"; private String host = "smtp.qq.com"; private String mail_head_name = "this is head of this mail"; private String mail_head_value = "this is head of this mail"; private String mail_to = "[email protected]"; private String mail_from = "[email protected]"; private String mail_subject = "this is the subject of this test mail"; private String mail_body = "this is mail_body of this test mail"; private String personalName = "我的邮件"; public void sendMail() throws SendFailedException{ try { //发送邮件的props文件 Properties props = new Properties(); // 初始化props props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); System.out.println(props); //进行邮件服务用户认证 Authenticator auth = new MyEmailAutherticator(username,password); // 创建session,和邮件服务器进行通讯 Session session = Session.getDefaultInstance(props,auth); // 创建mime类型邮件 MimeMessage message = new MimeMessage(session); //设置邮件格式 message.setContent("Hello","text/html;charset=utf-8"); // 设置主题 message.setSubject(mail_subject); //设置邮件内容 message.setText(mail_body); //设置邮件标题 message.setHeader(mail_head_name, mail_head_value); message.setSentDate(new Date());//设置邮件发送时期 Address address = new InternetAddress(mail_from,personalName); //设置邮件发送者的地址 message.setFrom(address); //======单发邮件====== //设置邮件接收者的地址 Address toaddress = new InternetAddress(mail_to); // 设置收件人 message.addRecipient(Message.RecipientType.TO,toaddress); //======群发邮件====== // List<String> recipients = new ArrayList<String>(); // recipients.add("[email protected]"); // recipients.add("[email protected]"); // final int num = recipients.size(); // InternetAddress[] addresses = new InternetAddress[num]; // for (int i = 0; i < num; i++) { // addresses[i] = new InternetAddress(recipients.get(i)); // } // message.setRecipients(Message.RecipientType.TO, addresses); System.out.println(message); // 发送邮件 Transport.send(message); System.out.println("Send Mail Ok!"); } catch (Exception e) { e.printStackTrace(); } } }
Test.java
public class Test { public static void main(String[] args) { Mail m = new Mail(); try { m.sendMail(); } catch (Exception e) { } } }
时间: 2024-10-06 00:40:15