使用 JavaMail 实现邮件发送与收取

来源:互联网 发布:极大极小值搜索算法 编辑:程序博客网 时间:2024/05/20 18:48

已使用 163 邮箱测试通过,且支持 SSL 连接。

发送邮件

示例:Jack 发送一封邮件给 Rose。

public class SendMail {    public static void main(String[] args) {        boolean isSSL = true;        String host = "smtp.163.com";        int port = 465;        String from = "jack@163.com";        String to = "rose@163.com";        boolean isAuth = true;        final String username = "jack@163.com";        final String password = "jack";        Properties props = new Properties();        props.put("mail.smtp.ssl.enable", isSSL);        props.put("mail.smtp.host", host);        props.put("mail.smtp.port", port);        props.put("mail.smtp.auth", isAuth);        Session session = Session.getDefaultInstance(props, new Authenticator() {            @Overrideprotected PasswordAuthentication getPasswordAuthentication() {                return new PasswordAuthentication(username, password);            }        });        try {            Message message = new MimeMessage(session);            message.setFrom(new InternetAddress(from));            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));            message.setSubject("主题");            message.setText("内容");            Transport.send(message);        } catch (AddressException e) {            e.printStackTrace();        } catch (MessagingException e) {            e.printStackTrace();        }        System.out.println("发送完毕!");    }}

收取邮件

示例:Rose 收取最近一封邮件。

import java.util.Date;import java.util.Properties;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Store;public class FetchMail {    public static void main(String[] args) {        String protocol = "pop3";        boolean isSSL = true;        String host = "pop.163.com";        int port = 995;        String username = "rose@163.com";        String password = "rose";        Properties props = new Properties();        props.put("mail.pop3.ssl.enable", isSSL);        props.put("mail.pop3.host", host);        props.put("mail.pop3.port", port);        Session session = Session.getDefaultInstance(props);        Store store = null;        Folder folder = null;        try {            store = session.getStore(protocol);            store.connect(username, password);            folder = store.getFolder("INBOX");            folder.open(Folder.READ_ONLY);            int size = folder.getMessageCount();            Message message = folder.getMessage(size);            String from = message.getFrom()[0].toString();            String subject = message.getSubject();            Date date = message.getSentDate();            System.out.println("From: " + from);            System.out.println("Subject: " + subject);            System.out.println("Date: " + date);        } catch (NoSuchProviderException e) {            e.printStackTrace();        } catch (MessagingException e) {            e.printStackTrace();        } finally {            try {                if (folder != null) {                    folder.close(false);                }                if (store != null) {                    store.close();                }            } catch (MessagingException e) {                e.printStackTrace();            }        }        System.out.println("接收完毕!");    }}

常用邮件协议

发送邮件:SMTP

收取邮件:POP3、IMAP

常用邮件配置项

配置项说明mail.xxx.ssl.enable
是否支持 SSL 连接mail.xxx.host
邮件服务器主机名mail.xxx.port
邮件服务器端口号mail.xxx.auth
是否进行身份认证


说明:xxx 表示协议名称,例如:smtp、pop3 等。

默认端口号


SMTP
POP3
IMAP
普通方式25110143SSL 方式465995993

使用 Apache Commons Email 发送邮件

import org.apache.commons.mail.Email;import org.apache.commons.mail.EmailException;import org.apache.commons.mail.SimpleEmail;public class SendMail {    public static void main(String[] args) {        boolean isSSL = true;        String host = "smtp.163.com";        int port = 465;        String from = "jack@163.com";        String to = "rose@163.com";        String username = "jack@163.com";        String password = "jack";        try {            Email email = new SimpleEmail();            email.setSSLOnConnect(isSSL);            email.setHostName(host);            email.setSmtpPort(port);            email.setAuthentication(username, password);            email.setFrom(from);            email.addTo(to);            email.setSubject("主题");            email.setMsg("内容");            email.send();        } catch (EmailException e) {            e.printStackTrace();        }        System.out.println("发送完毕!");    }

}来源: http://my.oschina.net/huangyong/blog/178641

来源: http://my.oschina.net/huangyong/blog/178641
来源: http://my.oschina.net/huangyong/blog/178641
0 0