Java mail

迷之星空 2017-07-21 10:52:40
OA系统整合外部邮箱.Java后台如何实现?
...全文
223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷之星空 2017-07-27
  • 打赏
  • 举报
回复
public String getMail(String port,String host,String loginAccount,String loginPassword) throws Exception{ Properties props = new Properties(); props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.setProperty("mail.imap.socketFactory.fallback","false"); // 协议 props.setProperty("mail.store.protocol", "imap"); props.setProperty("mail.pop3.socketFactory.port", port); // 端口 props.setProperty("mail.imap.port", port); // 服务器 props.setProperty("mail.imap.host", host); props.setProperty("mail.imap.auth", "true"); // 创建Session实例对象 Session session = Session.getInstance(props); Store store = session.getStore("imap"); store.connect(loginAccount, loginPassword); // 获得收件箱 IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); /* Folder.READ_ONLY:只读权限 * Folder.READ_WRITE:可读可写(可以修改邮件的状态) */ folder.open(Folder.READ_WRITE); //打开收件箱 System.out.println("未读邮件数: " + folder.getUnreadMessageCount()); System.out.println("删除邮件数: " + folder.getDeletedMessageCount()); System.out.println("新邮件: " + folder.getNewMessageCount()); // 获得收件箱中的邮件总数 System.out.println("邮件总数: " + folder.getMessageCount()); // 得到收件箱中的所有邮件,并解析 Message[] messages = folder.getMessages(); parseMessage(messages); //释放资源 folder.close(true); store.close(); return null; } /** * 解析邮件 * @param messages 要解析的邮件列表 */ public static void parseMessage(Message ...messages) throws MessagingException, IOException{ if (messages == null || messages.length < 1) throw new MessagingException("未找到要解析的邮件!"); // 解析邮件 for (int i = 0, count = messages.length; i < 5; i++) { IMAPMessage msg = (IMAPMessage) messages[i]; System.out.println("------------------解析第" + msg.getMessageNumber() + "封邮件-------------------- "); System.out.println("主题: " + getSubject(msg)); System.out.println("发件人: " + getFrom(msg)); System.out.println("收件人:" + getReceiveAddress(msg, null)); System.out.println("发送时间:" + getSentDate(msg, null)); System.out.println("是否已读:" + isSeen(msg)); System.out.println("邮件优先级:" + getPriority(msg)); System.out.println("是否需要回执:" + isReplySign(msg)); System.out.println("邮件大小:" + msg.getSize()+ "Kb"); StringBuffer content = new StringBuffer(30); System.out.println("邮件正文:" +msg.getContent()==null?"":msg.getContent()/*+ (content.length() > 100 ? content.substring(0,100) + "..." : content)*/); System.out.println("------------------第" + msg.getMessageNumber() + "封邮件解析结束-------------------- "); System.out.println(); } }
迷之星空 2017-07-27
  • 打赏
  • 举报
回复
说错了,是邮件正文
迷之星空 2017-07-27
  • 打赏
  • 举报
回复
现在我用IMAP协议接收邮件,Content里面为null,怎样才能获取邮箱正文
你好sun悟空 2017-07-26
  • 打赏
  • 举报
回复
不好意思,还没说完就提交了,接上: 3.调用工具类,传入三个参数就能完成邮件发送了,但是,这个工具类里面很多东西需要设置,比如服务器端口号,服务器主机名,授权码等等,这个需要你打开邮箱,在设置里面找到stmp/pop这个模块,里面会告诉你服务器主机名,端口号不写没关系,会采用默认,不放心或者因为端口号出错的话可以去查下端口号,授权码也是在这个模块生成的,是代替密码使用的
你好sun悟空 2017-07-26
  • 打赏
  • 举报
回复
1.如果你知道如何用java发送邮件,那么就很简单了,OA系统用web技术做的话,就直接处理请求就行,如果没有涉及到web,那么就监听前台操作,执行邮件发送 2.如果不知道如何利用java发送邮件,我推荐你用Apache的java mail 首先,你需要导入两个包,可以去Apache官网的mail栏下载,包名:commons-email.jar / mail.jar 然后利用这个工具类

public class ApacheMailUtils {
	public static boolean sendMail(String snedto, String subject, String msg) {
		try {
			// Email email = new SimpleEmail();
			Email email = new HtmlEmail();// 获取邮件对象
			// 发送邮件服务器主机名
			// email.setHostName("smtp.qq.com");//具体需要参见邮箱的stmp/pop模块
			email.setHostName("localhost");
			// email.setSmtpPort(465);// 发件邮件服务器端口号
			// 发件人的邮箱账号和授权码(代替密码使用)
			// email.setAuthenticator(new DefaultAuthenticator("账号",
			// "授权码"));
			email.setAuthenticator(new DefaultAuthenticator("a@dyc.com", "123"));
			// email.setSSLOnConnect(true);// 安全校验连接
			email.setFrom("a@dyc.com");// 邮件发件人信息
			email.setSubject(subject);
			// email.setMsg(msg); 发送超文本信息 ---> 设置信息内容类型 是一个超文本
			email.setContent(msg, "text/html;charset=utf-8");
			email.addTo(snedto);// 将发送给指定的用户 收件人信息
//			email.addCc("c@dyc.com");//抄送邮件
			
			email.send();// 发送邮件
			
			return true;
		} catch (EmailException e) {
			e.printStackTrace();
			return false;
		}
	}
}

等待时候 2017-07-26
  • 打赏
  • 举报
回复
源码案例:http://blog.csdn.net/janda2011/article/details/52871481
一个治疗术 2017-07-21
  • 打赏
  • 举报
回复
http://www.educity.cn/java/500124.html

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧