java实现邮箱发送功能
来源:互联网 发布:网络电视要不要机顶盒 编辑:程序博客网 时间:2024/05/21 11:54
java实现邮箱发送功能
利用javaMail实现邮箱的发送,通过已有的邮箱账号向其他邮箱发送邮件,比如通过已有163邮箱的账号信息发送邮件给其他邮箱(如:QQ邮箱),可以通过程序去自动操作,而无需自己登陆163邮箱去发送邮件
javaMail可以去官网下载:https://java.net/projects/javamail/pages/Home
项目源码下载地址:http://download.csdn.net/detail/u014316026/9001539
实现思路
- 构建一个继承自javax.mail.Authenticator的具体类,重写里面的getPasswordAuthentication()方法,这个类是做服务器邮箱(指:发送邮件的邮箱)的登录校验的,以确保你有发送邮件的权限
- 构建一个邮件实体类,里面存放一些邮件的标题,内容,文本,发送时间等变量
- 构建一个邮件发送器,在此类中需先构建一个Properties文件,该文件用来存放smtp服务器地址等参数,通过这个Properties文件和Authenticator子类来创建一个javax.mail.Session。Session的创建其实就是服务器邮箱的登录
- 然后构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并通过邮件实体类指定发送人,收件人,主题,内容,发送时间等元素
- 最后就是使用java.mail.Transport工具类来发送邮件了
具体代码如下:
继承自Authenticator的子类MailAuthenticator.java服务器邮箱
package com.liuns.mail.entity;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;/** * 服务器邮箱 */public class MailAuthenticator extends Authenticator{ /** * 用户名 */ private String username; /** * 登录密码 */ private String password; /** * 继承Authenticator类需重写此方法 */ @Override protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(username,password); } public MailAuthenticator(){ } public MailAuthenticator(String username, String password){ this.username = username; this.password = password; } public String getUsername() { return username; } public String getPassword() { return password; }}
邮件实体类Mail.java:里面有主题和内容
package com.liuns.mail.entity;/** * 邮件对象 */public class Mail { /** * 邮件标题 */ private String subject; /** * 邮件内容 */ private String content; public Mail(){ } public Mail(String subject, String content) { this.subject = subject; this.content = content; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; }}
邮件发送器MailSender.java:里面包括创建Properties文件和服务器邮箱的验证
package com.liuns.mail.util;import java.util.List;import java.util.Properties;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;import com.liuns.mail.entity.Mail;import com.liuns.mail.entity.MailAuthenticator;/** * 邮件发送器:可单发,可群发 */public class MailSender { /** * 发送邮件的Properties文件 */ private final transient Properties props = System.getProperties(); /** * 服务器邮箱登录验证 */ private transient MailAuthenticator mailAuthenticator; /** * 邮箱Session */ private transient Session session; /** * 初始化邮箱发送器 * * @param mailServiceUrl * 服务器邮箱地址 * @param username * 服务器邮箱用户名 * @param password * 服务器邮箱登录密码 */ public MailSender(final String mailServiceUrl,final String username, final String password){ init(mailServiceUrl, username, password); } /** * 初始化邮箱发送器 * * @param username * 服务器邮箱用户名 * @param password * 服务器邮箱登录密码 */ public MailSender(final String username, final String password){ //通过邮箱地址解析smtp服务器,对大多数邮箱都管用 final String mailServiceUrl = "smtp." + username.split("@")[1]; init(mailServiceUrl, username, password); } /** * 初始化操作 * * @param mailServiceUrl * 服务器邮箱地址 * @param username * 服务器邮箱用户名 * @param password * 服务器邮箱登录密码 */ public void init(String mailServiceUrl, String username, String password){ //初始化props props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", mailServiceUrl); //服务器邮箱验证 mailAuthenticator = new MailAuthenticator(username, password); //创建session,想当于邮箱登录 session = Session.getInstance(props, mailAuthenticator); } /** * 发送邮件 * * @param recipient * 收信人邮箱地址 * @param subject * 邮件标题 * @param content * 邮件内容 * @throws AddressException * @throws MessagingException */ public void send(String recipient, String subject, String content) throws AddressException, MessagingException{ //创建mime类型邮件 final MimeMessage msg = new MimeMessage(session); //设置发信人 msg.setFrom(new InternetAddress(mailAuthenticator.getUsername())); //设置收信人 msg.setRecipient(RecipientType.TO, new InternetAddress(recipient)); //设置邮件标题 msg.setSubject(subject); //设置邮件内容 msg.setContent(content, "text/html;charset=utf-8"); //发送邮件 Transport.send(msg); } /** * 群发邮件 * * @param recipients * 收信人们的邮箱地址 * @param subject * 邮件标题 * @param content * 邮件内容 * @throws AddressException * @throws MessagingException */ public void send(List<String> recipients, String subject, String content) throws AddressException, MessagingException{ //创建mime类型邮件 final MimeMessage msg = new MimeMessage(session); //设置发信人 msg.setFrom(new InternetAddress(mailAuthenticator.getUsername())); //设置收信人们 int num = recipients.size(); InternetAddress[] addresses = new InternetAddress[num]; for (int i = 0; i < num; i++) { addresses[i] = new InternetAddress(recipients.get(i)); } msg.setRecipients(RecipientType.TO, addresses); //设置邮件标题 msg.setSubject(subject); //设置邮件内容 msg.setContent(content, "text/html;charset=utf-8"); Transport.send(msg); } /** * 发送邮件 * * @param recipient * 收信人邮箱地址 * @param mail * 邮件对象 * @throws AddressException * @throws MessagingException * @throws */ public void send(String recipient, Mail mail) throws AddressException, MessagingException{ this.send(recipient, mail.getSubject(), mail.getContent()); } /** * 群发邮件 * * @param recipients * 收信人们的邮箱地址 * @param mail * 邮件对象 * @throws AddressException * @throws MessagingException * @throws */ public void send(List<String> recipients, Mail mail) throws AddressException, MessagingException{ this.send(recipients, mail.getSubject(), mail.getContent()); }}
最后是测试:MailTest.java
package com.liuns.mail.test;import javax.mail.MessagingException;import javax.mail.internet.AddressException;import com.liuns.mail.entity.Mail;import com.liuns.mail.util.MailSender;/** * 测试发送邮件 */public class MailTest { public static void main(String[] args) { //发件人邮箱地址:这里填写要发送出去的邮箱地址即可 String username = ""; //发件人邮箱登录密码:这里填写要发送出去的邮箱的登录密码即可 String password = ""; //创建邮箱发送器 MailSender mailSender = new MailSender(username,password); //邮箱对象 Mail mail = new Mail("这是邮件标题","这是邮件的内容"); //收件人邮箱地址:这里填写收件的邮箱的地址即可 String recipient = ""; try { mailSender.send(recipient, mail); } catch (AddressException e) { System.out.println("发信人邮箱路径不正确........"); e.printStackTrace(); } catch (MessagingException e) { System.out.println("邮件发送失败........"); e.printStackTrace(); } System.out.println("发送成功........"); }}
文章参考自:http://www.cnblogs.com/codeplus/archive/2011/10/30/2229391.html
0 0
- java实现邮箱发送功能
- java程序实现邮箱发送邮件功能
- JAVA实现qq邮箱发送功能
- Java实现邮箱发送
- Java实现邮箱发送
- Java 发送邮箱简单实现
- ASP.NET邮箱发送功能实现
- 邮箱发送功能的轻量级实现
- java实现邮箱群发功能
- Java-使用JavaMail发送一封邮件给用户邮箱功能实现
- 简单的java实现邮箱发送邮件
- java实现发送qq邮箱信息
- 纯Java实现网易邮箱发送邮件
- 简单的java实现邮箱发送邮件
- java web实现邮箱的发送
- JAVA实现发送邮箱验证码
- java 代码实现163邮箱发送邮件到QQ邮箱
- JAVA实现邮箱上传文件功能
- Lotto
- HDU1272 小希的迷宫
- 链表插入排序
- 用RAID0 安装Ubuntu Server
- java复习-类和对象(二)
- java实现邮箱发送功能
- POJ2429 GCD & LCM Inverse
- hdu 4185 Oil Skimming
- hdu 5375 Gray code(DP)
- Struts2多文件的上传
- 2015.08.10总结
- Tempus et mobilius Time and motion栈与队列
- APK防反编译技术
- Web支持可暂停的超大文件上传