- 浏览: 887665 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
Gmail目前已经启用了POP3和SMTP服务,具体情况请看 http://www.javayou.com/showlog.jspe?log_id=490
与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:
1. 邮件收取
- package lius.javamail.ssl;
- import java.io.UnsupportedEncodingException;
- import java.security.*;
- import java.util.Properties;
- import javax.mail.*;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeUtility;
- /**
- * 用于收取Gmail邮件
- * @author Winter Lau
- */
- public class GmailFetch {
- public static void main(String argv[]) throws Exception {
- Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
- final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
- // Get a Properties object
- Properties props = System.getProperties();
- props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
- props.setProperty("mail.pop3.socketFactory.fallback", "false");
- props.setProperty("mail.pop3.port", "995");
- props.setProperty("mail.pop3.socketFactory.port", "995");
- //以下步骤跟一般的JavaMail操作相同
- Session session = Session.getDefaultInstance(props,null);
- //请将红色部分对应替换成你的邮箱帐号和密码
- URLName urln = new URLName("pop3","pop.gmail.com",995,null,
- "[邮箱帐号]", "[邮箱密码]");
- Store store = session.getStore(urln);
- Folder inbox = null;
- try {
- store.connect();
- inbox = store.getFolder("INBOX");
- inbox.open(Folder.READ_ONLY);
- FetchProfile profile = new FetchProfile();
- profile.add(FetchProfile.Item.ENVELOPE);
- Message[] messages = inbox.getMessages();
- inbox.fetch(messages, profile);
- System.out.println("收件箱的邮件数:" + messages.length);
- for (int i = 0; i < messages.length; i++) {
- //邮件发送者
- String from = decodeText(messages[i].getFrom()[0].toString());
- InternetAddress ia = new InternetAddress(from);
- System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')');
- //邮件标题
- System.out.println("TITLE:" + messages[i].getSubject());
- //邮件大小
- System.out.println("SIZE:" + messages[i].getSize());
- //邮件发送时间
- System.out.println("DATE:" + messages[i].getSentDate());
- }
- } finally {
- try {
- inbox.close(false);
- } catch (Exception e) {}
- try {
- store.close();
- } catch (Exception e) {}
- }
- }
- protected static String decodeText(String text)
- throws UnsupportedEncodingException {
- if (text == null)
- return null;
- if (text.startsWith("=?GB") || text.startsWith("=?gb"))
- text = MimeUtility.decodeText(text);
- else
- text = new String(text.getBytes("ISO8859_1"));
- return text;
- }
- }
package lius.javamail.ssl; import java.io.UnsupportedEncodingException; import java.security.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; /** * 用于收取Gmail邮件 * @author Winter Lau */ public class GmailFetch { public static void main(String argv[]) throws Exception { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; // Get a Properties object Properties props = System.getProperties(); props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995"); //以下步骤跟一般的JavaMail操作相同 Session session = Session.getDefaultInstance(props,null); //请将红色部分对应替换成你的邮箱帐号和密码 URLName urln = new URLName("pop3","pop.gmail.com",995,null, "[邮箱帐号]", "[邮箱密码]"); Store store = session.getStore(urln); Folder inbox = null; try { store.connect(); inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); FetchProfile profile = new FetchProfile(); profile.add(FetchProfile.Item.ENVELOPE); Message[] messages = inbox.getMessages(); inbox.fetch(messages, profile); System.out.println("收件箱的邮件数:" + messages.length); for (int i = 0; i < messages.length; i++) { //邮件发送者 String from = decodeText(messages[i].getFrom()[0].toString()); InternetAddress ia = new InternetAddress(from); System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')'); //邮件标题 System.out.println("TITLE:" + messages[i].getSubject()); //邮件大小 System.out.println("SIZE:" + messages[i].getSize()); //邮件发送时间 System.out.println("DATE:" + messages[i].getSentDate()); } } finally { try { inbox.close(false); } catch (Exception e) {} try { store.close(); } catch (Exception e) {} } } protected static String decodeText(String text) throws UnsupportedEncodingException { if (text == null) return null; if (text.startsWith("=?GB") || text.startsWith("=?gb")) text = MimeUtility.decodeText(text); else text = new String(text.getBytes("ISO8859_1")); return text; } }
2. 发送邮件
- package lius.javamail.ssl;
- import java.security.Security;
- import java.util.Date;
- import java.util.Properties;
- import javax.mail.Authenticator;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.AddressException;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- /**
- * 使用Gmail发送邮件
- * @author Winter Lau
- */
- public class GmailSender {
- public static void main(String[] args) throws AddressException, MessagingException {
- Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
- final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
- // Get a Properties object
- Properties props = System.getProperties();
- props.setProperty("mail.smtp.host", "smtp.gmail.com");
- props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
- props.setProperty("mail.smtp.socketFactory.fallback", "false");
- props.setProperty("mail.smtp.port", "465");
- props.setProperty("mail.smtp.socketFactory.port", "465");
- props.put("mail.smtp.auth", "true");
- final String username = "[邮箱帐号]";
- final String password = "[邮箱密码]";
- Session session = Session.getDefaultInstance(props, new Authenticator(){
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }});
- // -- Create a new message --
- Message msg = new MimeMessage(session);
- // -- Set the FROM and TO fields --
- msg.setFrom(new InternetAddress(username + "@mo168.com"));
- msg.setRecipients(Message.RecipientType.TO,
- InternetAddress.parse("[收件人地址]",false));
- msg.setSubject("Hello");
- msg.setText("How are you");
- msg.setSentDate(new Date());
- Transport.send(msg);
- System.out.println("Message sent.");
- }
- }
package lius.javamail.ssl; import java.security.Security; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * 使用Gmail发送邮件 * @author Winter Lau */ public class GmailSender { public static void main(String[] args) throws AddressException, MessagingException { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; // Get a Properties object Properties props = System.getProperties(); props.setProperty("mail.smtp.host", "smtp.gmail.com"); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "465"); props.setProperty("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.auth", "true"); final String username = "[邮箱帐号]"; final String password = "[邮箱密码]"; Session session = Session.getDefaultInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); }}); // -- Create a new message -- Message msg = new MimeMessage(session); // -- Set the FROM and TO fields -- msg.setFrom(new InternetAddress(username + "@mo168.com")); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[收件人地址]",false)); msg.setSubject("Hello"); msg.setText("How are you"); msg.setSentDate(new Date()); Transport.send(msg); System.out.println("Message sent."); } }
关于邮件的解析请看 http://www.javayou.com/showlog.jspe?log_id=372
更多关于javamail的文章 http://www.javayou.com/main.jspe?query=javamail
发表评论
-
操作系统的目标和作用
2012-07-05 23:46 1314操作系统的目标 目前存在着多种类型的OS,不同类型的OS ... -
利用(ffmpeg)生成视频缩略图(java)
2012-07-01 01:11 0对于上传视频生成缩略图使用的是ffmpeg进行生成的。 自己在 ... -
对Java多线程技术中所有方法的详细解析
2012-06-06 11:32 775一、run()和start() 这两个 ... -
java乱码
2012-06-06 11:33 961自从接触Java和JSP以来, ... -
学习apache commons-io类库中的文件清除器
2011-07-06 23:26 1429学习apache commons-io 1.4类库中的File ... -
java 正则表达式 过滤html标签
2011-05-24 15:10 5346前段时间开发的时候要读取一篇文章的简介内容(也就是前200个字 ... -
转---Eclipse中web-inf和meta-inf文件夹的信息
2011-05-24 13:08 1126Eclipse中web-inf和meta-inf ... -
logback与Log4J的区别
2011-05-17 23:34 1420Logback和log4j是非常相似 ... -
性能优化
2011-04-14 16:10 1163(1)jdbc性能优化 jdbc程序的性能主要由两个因素决定 ... -
JAVA的Random类(转)
2011-04-12 00:21 904Random类中实现的随机算法是伪随机,也就是有规则的随机。在 ... -
非阻塞的Socket链接
2011-04-10 21:59 886import java.io.IOException; ... -
创建临时文件
2011-04-10 21:55 1087package net.java2000.io; ... -
面向对象设计的基本原则
2011-04-07 10:28 1139摘自:http://soft6.com/tech/6/6501 ... -
proxool
2011-04-02 15:01 850属性列表说明: fatal-sql- ... -
当前Java软件开发中几种认识误区
2011-04-01 10:12 872越来越多人开始使用Java ... -
Java中查看一个方法被调用的层次(Reflection、StackTrace)
2011-04-01 00:53 2026package test; public class Mai ... -
反序列化时恢复transient字段
2011-03-30 13:20 1209我们知道将字段设置为transient,可以避免该自动被序列化 ... -
用socket连接服务器直接发送接收邮件
2011-03-22 17:22 1295首页 新闻 论坛 问答 博客 招聘 更多 ▼ 专栏 &l ... -
Java 反射与内省
2011-03-14 22:08 1067一、java反射机制 JAVA反 ... -
关于jdk的注解@SuppressWarnings详解
2011-03-01 15:23 1490@SuppressWarnings J2SE 提供的一个批注或 ...
相关推荐
### JavaMail收发Gmail邮件知识点详解 ...通过以上步骤,我们可以使用JavaMail实现对Gmail邮件的收发功能,并且通过SSL加密技术确保了数据的安全传输。这对于开发涉及邮件处理的应用程序非常有用。
使用`MimeMessage`类创建一个邮件对象,并设置发件人、收件人、主题和内容。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(FROM_ADDRESS)); message....
本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
这个例子展示了如何使用JavaMail API通过QQ和Gmail邮箱实现邮件的发送,并且使用了SSL(Secure Socket Layer)来确保通信的安全性。SSL是网络安全传输的一种标准,它可以加密传输的数据,防止在互联网上被窃取或篡改...
`Folder` 对象的 `getMessages()` 方法可以获取邮件列表,每封邮件都是一个 `Message` 对象,可以通过 `Message` 的方法来读取具体内容,如发件人、收件人、主题、日期等。 在这个“outmail”文件中,可能包含了...
为了确保邮件发送的成功,开发者需要了解SMTP服务器的设置,包括是否需要SSL/TLS加密连接,以及正确的端口号。某些邮件服务商如Gmail、Yahoo、Outlook等可能需要开启"不安全的应用程序访问"权限。 总的来说,...
3. 构造邮件消息:使用`Message`类创建一个邮件对象,并设置发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example.com"))...
此外,如果邮件包含敏感信息,务必确保传输过程的安全性,例如启用SSL/TLS加密。 以上就是使用JavaMail发送邮件的详细过程,以及与文本编辑器KindEditor的集成方式。在开发过程中,记得根据具体需求调整和优化代码...
在这个例子中,`setNeedAuth`方法用于设置是否需要SMTP身份认证,`setFrom`、`setRecipient`等方法用于设置邮件的发件人和收件人,`setSubject`用于设置邮件主题,`setText`或`addBodyPart`用于设置邮件正文(可以是...
在本篇文章中,我们将深入探讨如何利用Spring来实现JavaMail邮件发送,以及在实际应用中需要注意的关键点。 首先,我们需要理解JavaMail API的基础概念。JavaMail是一个用于处理邮件的开放源码API,它允许开发者...
JavaMail 还支持更复杂的功能,如发送 HTML 邮件、添加附件、使用 SSL/TLS 加密连接等。你可以通过调整 `Message` 对象和配置 `Properties` 来实现这些功能。 此外,JavaMail 提供了对 POP3(邮局协议)和 IMAP...
在Android开发中,有时我们需要为用户提供发送邮件的功能,例如报告应用错误、分享内容或接收服务通知。JavaMail for Android和...在实际应用中,确保遵循最佳实践,如使用SSL/TLS加密连接,以保护用户数据的安全。
2. **创建 Message 对象**:Message 是邮件实体,包含了邮件的头部信息(如发件人、收件人、主题和日期)以及邮件内容。使用 `MimeMessage` 类创建一个实例,并设置相应的属性。 ```java MimeMessage message = new...
同时,JavaMail API也支持SSL/TLS加密,以确保邮件通信的安全性。 总之,JavaMail API和`javaMail.jar`是Java开发者处理电子邮件不可或缺的工具,它们提供了强大的功能,使得在程序中发送和接收邮件变得简单易行。
这个教程可能还会涵盖更高级的主题,如处理邮件认证问题、使用SSL/TLS加密连接、调试邮件发送过程等。同时,可能会涉及到异常处理,因为邮件发送过程中可能会出现网络问题或其他错误。 总之,JavaMail API 提供了一...
- **SSL/TLS 安全连接**:通过配置,可以在不安全的网络环境中安全地连接邮件服务器。 - **邮件过滤和搜索**:使用 `Folder.search()` 方法可以按条件搜索邮件,配合 `Message旗标` 可以进行邮件过滤。 - **邮件...
4. **构建邮件**:使用`Commons-Mail`的`Email`类创建邮件实例,设置收件人、发件人、主题和正文: ```java Email email = new SimpleEmail(); email.setFrom("your-email@example.com"); email.setSubject(...
- 使用SSL/TLS连接以保护通信的安全性。 - 定期更新库和依赖,以防已知漏洞被利用。 5. **扩展功能** - 可以定期检查邮件状态,当达到特定条件时触发提醒或自动处理。 - 结合Webhook或其他通知服务,实时报告...
为了安全地发送和接收邮件,通常需要启用SSL/TLS加密。可以通过设置`mail.smtp.starttls.enable`和`mail.smtp.ssl.enable`属性来开启。 6. **异常处理** 在实际编程中,应处理可能出现的异常,如...
1. **配置邮件服务器**:首先,你需要知道你的邮件服务商的SMTP服务器地址、端口号,以及是否需要SSL/TLS加密。这些信息可以在邮件服务提供商的帮助文档中找到。例如,对于Gmail,SMTP服务器通常是smtp.gmail.com,...