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

实现思路

  1. 构建一个继承自javax.mail.Authenticator的具体类,重写里面的getPasswordAuthentication()方法,这个类是做服务器邮箱(指:发送邮件的邮箱)的登录校验的,以确保你有发送邮件的权限
  2. 构建一个邮件实体类,里面存放一些邮件的标题,内容,文本,发送时间等变量
  3. 构建一个邮件发送器,在此类中需先构建一个Properties文件,该文件用来存放smtp服务器地址等参数,通过这个Properties文件和Authenticator子类来创建一个javax.mail.Session。Session的创建其实就是服务器邮箱的登录
  4. 然后构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并通过邮件实体类指定发送人,收件人,主题,内容,发送时间等元素
  5. 最后就是使用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
原创粉丝点击