📄 mail.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的 * */package biz.tbuy.share.mail;import java.security.Security;import java.util.Date;import java.util.Properties;import javax.mail.Folder;import javax.mail.Message;import javax.mail.Session;import javax.mail.Store;import javax.mail.Transport;import javax.mail.URLName;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b><a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b><a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> * * 该类主要用于邮件的接收与发送,暂时这么多! * 在使用gmail服务下可以正常收发邮件 * 注意:考滤过163/hotmail.com等邮件服务,但由于hotmail及163等都需要付费 * 或Vip才能正常使用客户端程序收发邮件,否则无法通过验证。因为没有相关vip帐号, * 所以暂时无法验证在163或hotmail是否可以通过. */public class Mail { private String _user; // 密码 private String _password; // 用户名 private String _serverReceive;// 邮件接收服务器,如:pop.gmail.com private String _portSmtp; // 默认的邮件发送端口:25 private String _portPop; // 默认的邮件接收端口:110 private boolean _isSSLSmtp; // 是否需要安全连接 private boolean _isSSLPop; // 是否需要安全连接 private String _portSSLSmtp; // 默认的安全连接端口smtp:465 private String _portSSLPop; // 默认的安全连接端口pop:995 private String _serverType; // 服务器类型 如:pop3 private String _serverSend; // 邮件发送服务器,如:smtp.gmail.com private String _from; // 邮件发送方 private String _to; // 邮件接收方 private String _subject; // 邮件标题 private Date _sentDate; // 邮件发送日期 private String _text; // 邮件主体信息 public Mail() { } public void setUser(String user) { _user = user; } public void setPassword(String password) { _password = password; } public void setServerReceive(String serverReceive) { _serverReceive = serverReceive; } public void setPortSmtp(String portSmtp) { _portSmtp = portSmtp; } public void setPortPop(String portPop) { _portPop = portPop; } public void setIsSSLSmtp(boolean isSSLSmtp) { _isSSLSmtp = isSSLSmtp; } public void setIsSSLPop(boolean isSSLPop) { _isSSLPop = isSSLPop; } public void setPortSSLSmtp(String portSSLSmtp) { _portSSLSmtp = portSSLSmtp; } public void setPortSSLPop(String portSSLPop) { _portSSLPop = portSSLPop; } public void setServerType(String serverType) { _serverType = serverType; } public void setServerSend(String serverSend) { _serverSend = serverSend; } /** * 设置邮件发送者的email地址, * 如:huliqing.cn@gmail.com * @param from 邮件发送方的地址 */ public void setFrom(String from) { _from = from; } /** * 设置邮件接收方的email地址, * 如:huliqing@hotmail.com * @param to 邮件接收者 */ public void setTo(String to) { _to = to; } /** * 设置邮件的标题 * @param subject 邮件的标题 */ public void setSubject(String subject) { _subject = subject; } /** * 设置邮件的发送时间,java.util.Date类型 * @param sentDate 邮件的发送时间 */ public void setSendDate(Date sentDate) { _sentDate = sentDate; } /** * 设置邮件的主体内容 * @param text 邮件的主体信息 */ public void setText(String text) { _text = text; } /** * 接收邮件,需要设置好以上各项配置信息 */ public void receive() { try{ Properties props = new Properties(); Session session = null; Store store = null; Folder folder = null; if (_isSSLPop) { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", _portSSLPop); props.setProperty("mail.pop3.socketFactory.port", _portSSLPop); } props.setProperty("mail.pop3.auth", "true"); session = Session.getDefaultInstance(props); URLName urln = new URLName(_serverType, _serverReceive, Integer.parseInt(_portPop), null, _user, _password); store = session.getStore(urln); store.connect(); folder = store.getFolder("INBOX"); if(folder != null) { folder.open(Folder.READ_ONLY); // 以只读方式打开 Message[] messages = folder.getMessages(); // 取信 // 暂时输出在控制台中 System.out.println("共有邮件:["+ folder.getMessageCount() +"]\n"); for(int i = 0; i < messages.length; i++) { System.out.println("--------Message:" + (i+1) + "--------"); messages[i].writeTo(System.out); } } folder.close(false); store.close(); }catch(Exception err) { err.printStackTrace(); } } /** * 发送邮件 * @return true 如果发送成功,否则返回false */ public boolean send() { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; Properties props = System.getProperties(); props.setProperty("mail.smtp.host", _serverSend); if (_isSSLSmtp) { props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", _portSSLSmtp); props.setProperty("mail.smtp.socketFactory.port", _portSSLSmtp); } props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new MailAuthenticator(_user, _password)); try{ MimeMessage mimeMess = new MimeMessage(session); // 构造Message mimeMess.setFrom(new InternetAddress(_from)); // 设置发信人地址 mimeMess.setRecipients(Message.RecipientType.TO, InternetAddress.parse(_to)); // 设置收信人地址 mimeMess.setSubject(_subject); // 设置标题 mimeMess.setSentDate(_sentDate); // 设置发送日期 mimeMess.setText(_text); // 设置内容 Transport.send(mimeMess); // 发送邮件 return true; }catch(Exception e) { e.printStackTrace(); return false; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -