虽然jakarta的commons email 简化了javamail的使用,但是遇到复杂一点的东东,我们还是需要重新拿起javamail来,也许我们可以做.
其实javamail也不是太复杂 o_o 下面是通过gmail发送邮件,因为gmail需要smtp验证,所有要额外的设定
mail.smtp.auth 值为 true
并且添加
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
我们来看一下刘冬的代码:
http://www.javayou.com/showlog<wbr>.jspe?log_id=498
1. 邮件收取
1package lius.javamail.ssl;
2
3import java.io.UnsupportedEncodingException;
4import java.security.*;
5import java.util.Properties;
6import javax.mail.*;
7import javax.mail.internet.InternetAddress;
8import javax.mail.internet.MimeUtility;
9
10/**
11 * 用于收取Gmail邮件
12 * @author Winter Lau
13 */
14public class GmailFetch {
15
16 public static void main(String argv[]) throws Exception {
17
18 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
19 final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
20
21 // Get a Properties object
22 Properties props = System.getProperties();
23 props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
24 props.setProperty("mail.pop3.socketFactory.fallback", "false");
25 props.setProperty("mail.pop3.port", "995");
26 props.setProperty("mail.pop3.socketFactory.port", "995");
27
28 //以下步骤跟一般的JavaMail操作相同
29 Session session = Session.getDefaultInstance(props,null);
30
31 //请将红色部分对应替换成你的邮箱帐号和密码
32 URLName urln = new URLName("pop3","pop.gmail.com",995,null,
33 "[邮箱帐号]", "[邮箱密码]");
34 Store store = session.getStore(urln);
35 Folder inbox = null;
36 try {
37 store.connect();
38 inbox = store.getFolder("INBOX");
39 inbox.open(Folder.READ_ONLY);
40 FetchProfile profile = new FetchProfile();
41 profile.add(FetchProfile.Item.ENVELOPE);
42 Message[] messages = inbox.getMessages();
43 inbox.fetch(messages, profile);
44 System.out.println("收件箱的邮件数:" + messages.length);
45 for (int i = 0; i < messages.length; i++) {
46 //邮件发送者
47 String from = decodeText(messages[i].getFrom()[0].toString());
48 InternetAddress ia = new InternetAddress(from);
49 System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')');
50 //邮件标题
51 System.out.println("TITLE:" + messages[i].getSubject());
52 //邮件大小
53 System.out.println("SIZE:" + messages[i].getSize());
54 //邮件发送时间
55 System.out.println("DATE:" + messages[i].getSentDate());
56 }
57 } finally {
58 try {
59 inbox.close(false);
60 } catch (Exception e) {}
61 try {
62 store.close();
63 } catch (Exception e) {}
64 }
65 }
66
67 protected static String decodeText(String text)
68 throws UnsupportedEncodingException {
69 if (text == null)
70 return null;
71 if (text.startsWith("=?GB") || text.startsWith("=?gb"))
72 text = MimeUtility.decodeText(text);
73 else
74 text = new String(text.getBytes("ISO8859_1"));
75 return text;
76 }
77
78}
2. 发送邮件
2
3import java.io.UnsupportedEncodingException;
4import java.security.*;
5import java.util.Properties;
6import javax.mail.*;
7import javax.mail.internet.InternetAddress;
8import javax.mail.internet.MimeUtility;
9
10/**
11 * 用于收取Gmail邮件
12 * @author Winter Lau
13 */
14public class GmailFetch {
15
16 public static void main(String argv[]) throws Exception {
17
18 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
19 final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
20
21 // Get a Properties object
22 Properties props = System.getProperties();
23 props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
24 props.setProperty("mail.pop3.socketFactory.fallback", "false");
25 props.setProperty("mail.pop3.port", "995");
26 props.setProperty("mail.pop3.socketFactory.port", "995");
27
28 //以下步骤跟一般的JavaMail操作相同
29 Session session = Session.getDefaultInstance(props,null);
30
31 //请将红色部分对应替换成你的邮箱帐号和密码
32 URLName urln = new URLName("pop3","pop.gmail.com",995,null,
33 "[邮箱帐号]", "[邮箱密码]");
34 Store store = session.getStore(urln);
35 Folder inbox = null;
36 try {
37 store.connect();
38 inbox = store.getFolder("INBOX");
39 inbox.open(Folder.READ_ONLY);
40 FetchProfile profile = new FetchProfile();
41 profile.add(FetchProfile.Item.ENVELOPE);
42 Message[] messages = inbox.getMessages();
43 inbox.fetch(messages, profile);
44 System.out.println("收件箱的邮件数:" + messages.length);
45 for (int i = 0; i < messages.length; i++) {
46 //邮件发送者
47 String from = decodeText(messages[i].getFrom()[0].toString());
48 InternetAddress ia = new InternetAddress(from);
49 System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')');
50 //邮件标题
51 System.out.println("TITLE:" + messages[i].getSubject());
52 //邮件大小
53 System.out.println("SIZE:" + messages[i].getSize());
54 //邮件发送时间
55 System.out.println("DATE:" + messages[i].getSentDate());
56 }
57 } finally {
58 try {
59 inbox.close(false);
60 } catch (Exception e) {}
61 try {
62 store.close();
63 } catch (Exception e) {}
64 }
65 }
66
67 protected static String decodeText(String text)
68 throws UnsupportedEncodingException {
69 if (text == null)
70 return null;
71 if (text.startsWith("=?GB") || text.startsWith("=?gb"))
72 text = MimeUtility.decodeText(text);
73 else
74 text = new String(text.getBytes("ISO8859_1"));
75 return text;
76 }
77
78}
2. 发送邮件
1package lius.javamail.ssl;
2
3import java.security.Security;
4import java.util.Date;
5import java.util.Properties;
6
7import javax.mail.Authenticator;
8import javax.mail.Message;
9import javax.mail.MessagingException;
10import javax.mail.PasswordAuthentication;
11import javax.mail.Session;
12import javax.mail.Transport;
13import javax.mail.internet.AddressException;
14import javax.mail.internet.InternetAddress;
15import javax.mail.internet.MimeMessage;
16
17/**
18 * 使用Gmail发送邮件
19 * @author Winter Lau
20 */
21public class GmailSender {
22
23 public static void main(String[] args) throws AddressException, MessagingException {
24 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
25 final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
26 // Get a Properties object
27 Properties props = System.getProperties();
28 props.setProperty("mail.smtp.host", "smtp.gmail.com");
29 props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
30 props.setProperty("mail.smtp.socketFactory.fallback", "false");
31 props.setProperty("mail.smtp.port", "465");
32 props.setProperty("mail.smtp.socketFactory.port", "465");
33 props.put("mail.smtp.auth", "true");
34 final String username = "[邮箱帐号]";
35 final String password = "[邮箱密码]";
36 Session session = Session.getDefaultInstance(props, new Authenticator(){
37 protected PasswordAuthentication getPasswordAuthentication() {
38 return new PasswordAuthentication(username, password);
39 }});
40
41 // -- Create a new message --
42 Message msg = new MimeMessage(session);
43
44 // -- Set the FROM and TO fields --
45 msg.setFrom(new InternetAddress(username + "@mo168.com"));
46 msg.setRecipients(Message.RecipientType.TO,
47 InternetAddress.parse("[收件人地址]",false));
48 msg.setSubject("Hello");
49 msg.setText("How are you");
50 msg.setSentDate(new Date());
51 Transport.send(msg);
52
53 System.out.println("Message sent.");
54 }
55}
2
3import java.security.Security;
4import java.util.Date;
5import java.util.Properties;
6
7import javax.mail.Authenticator;
8import javax.mail.Message;
9import javax.mail.MessagingException;
10import javax.mail.PasswordAuthentication;
11import javax.mail.Session;
12import javax.mail.Transport;
13import javax.mail.internet.AddressException;
14import javax.mail.internet.InternetAddress;
15import javax.mail.internet.MimeMessage;
16
17/**
18 * 使用Gmail发送邮件
19 * @author Winter Lau
20 */
21public class GmailSender {
22
23 public static void main(String[] args) throws AddressException, MessagingException {
24 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
25 final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
26 // Get a Properties object
27 Properties props = System.getProperties();
28 props.setProperty("mail.smtp.host", "smtp.gmail.com");
29 props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
30 props.setProperty("mail.smtp.socketFactory.fallback", "false");
31 props.setProperty("mail.smtp.port", "465");
32 props.setProperty("mail.smtp.socketFactory.port", "465");
33 props.put("mail.smtp.auth", "true");
34 final String username = "[邮箱帐号]";
35 final String password = "[邮箱密码]";
36 Session session = Session.getDefaultInstance(props, new Authenticator(){
37 protected PasswordAuthentication getPasswordAuthentication() {
38 return new PasswordAuthentication(username, password);
39 }});
40
41 // -- Create a new message --
42 Message msg = new MimeMessage(session);
43
44 // -- Set the FROM and TO fields --
45 msg.setFrom(new InternetAddress(username + "@mo168.com"));
46 msg.setRecipients(Message.RecipientType.TO,
47 InternetAddress.parse("[收件人地址]",false));
48 msg.setSubject("Hello");
49 msg.setText("How are you");
50 msg.setSentDate(new Date());
51 Transport.send(msg);
52
53 System.out.println("Message sent.");
54 }
55}
关于邮件的解析请看 http://www.javayou.com/showlog.jspe?log_id=372
更多关于javamail的文章 http://www.javayou.com/main.jspe?query=javamail
相关推荐
可以利用JavaMail收发Gmail邮件,ssl;写得比较详细,
附件是所需要的包文件 博文链接:https://xagcdx.iteye.com/blog/1039425
用JavaMail写的示例程序,已经打包为jar 使用前在jar同目录下建立三个文本文件 addr.txt这个是收信人的地址,可以无限多,建议不超过50,否则面临smtp退信,格式 :一行一个地址,后面不要加空行! login.txt这个是...
javamail 发送邮件的例子(通过了qq 和gmail的邮箱)有SSL 安全的方式
利用JAVAMAIL实现的发送邮件的小例子
这个压缩包包含了两个Jar包,用于构建JavaMail项目。 使用示例(使用gmail测试):http://blog.csdn.net/hqcchina
早期版本jdk+JAF+javamail(需重新编译源代码,未测试) 已知问题: 1. gmail和hotmail邮箱能够正常收取 126邮箱不能正常收取附件 其他邮箱未测试 2. 中文支持应该没问题 运行: java -jar BulkEmailSender.jar
本章中主要介绍了使用JavaMail进行收取和发送带附件的邮件,使用XStream进行对象和XML之间的转换,并将邮件对应的XML文件和邮件的附件保存到本地的相应目录中,在操作邮件的过程中,可以直接操作邮件对象,就实现了...
总之,这些过程就是邮件收发的底层的通信过程,通俗易懂,但由于一些安全的因素,底层这样直接的通信已越来越被受限制,因此底层的通信极不易成功,这也是本系统采用高层JavaMail API的原因之一。 (5) 一些常用...
使用Java邮件发送Gmail电子邮件的示例应用程序,有关该应用程序的文章已查阅:// 要开始使用,只需分配此电子邮件的源电子邮件和密码,在SendMail.java类的main方法中,为以下参数分配值:源电子邮件,目标电子...
Gmail 电子邮件项目用于开发应用程序的内容: Eclipse (Keplar)JSP, Servlets, JavaMail API, JQueryApache Tomcat Server 概括: This is a dynamic web project allows users to login to their gmail accounts ...
目前仅支持 Gmail。 它使用 JavaMail API 来连接、检索和发送邮件。 登录画面 登录屏幕的 JTextField 使用 TextPrompt 类来放置占位符文本。 收件箱屏幕 收件箱屏幕使用带有三个不同选项卡的 JTabbedPane 收件箱...
电子邮件模块 电子邮件模块是 JavaMail 的一个实现,目前用于 Gmail、Yahoo 或 Hotmail。 将逐渐增加对其他帐户的支持。
JavaMailAPI 使用JavaMailAPI在Android中使用gmail帐户发送电子邮件的示例
Gmail Intent。 如果您想使用它并开发您自己的邮件客户端,您可以在 GNU 通用公共许可证下使用它(请参阅 LICENSE 文件)。 我想增强 MailSender 类,添加新的 useMailProperties****() 函数。 注意 ...
javamail-example 简单的jsp,可通过gmail smtp从html表单发送电子邮件
解析发送到 Gmail 地址的电子邮件命令以通过 COM 接口控制 iTunes 设置:这是在 Eclipse 中设计的。 只需单击文件-> 导入。 然后在“Java”下选择“导入现有项目”。 选择你在这里得到的根文件夹,它应该打开它。 ...
Gmail插件 Gmail-Plugin为最终用户提供了Eclipse IDE中的Gmail... 2.)Javamail API-它提供对电子邮件消息传递系统的通用机制的见解。 它用于为各种邮件协议(SMTP,IMAP等)提供诸如控制和加载类之类的功能。 它还模拟
适用于Android的JavaMail API 使用JavaMailAPI在Android中使用gmail帐户发送电子邮件的示例JavaMail API文档先决条件Android SDK v10入门该项目使用Gradle构建系统。 要构建此项目,请使用“ gradlew build”命令或...
本程序是使用Javamail API和Jacob Office操作库编写的批量发送实名邀请函的Java程序。 1、不仅可以提供全功能的邮件发送功能: - 发送常规邮件(邮件主题、发送地址、接收地址、邮件正文) - 邮件群发 - ...