首页 > 编程语言 >JavaMail读发邮件

JavaMail读发邮件

时间:2023-05-09 14:32:42浏览次数:45  
标签:发邮件 String new JavaMail import mail javax 邮件


SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,它定义了发送电子邮件的机制。在 JavaMail API 环境中,基于 JavaMail 的程序将和您的公司或因特网服务供应商的(Internet Service Provider's,ISP's)SMTP 服务器通信。SMTP 服务器可将消息中转至接收方 SMTP 服务器,以便最终让用户经由 POP 或 IMAP 获得。这不是要求 SMTP 服务器成为开放的中继,尽管 SMTP 服务器支持身份验证,不过还是得确保它的配置正确。像配置服务器来中继消息或添加删除邮件账号这类任务的实现,JavaMail API 中并不支持。 

  POP(Post Office Protocol),即邮局协议。目前用的是版本3,所以人们通常将它称为 POP3,RFC 1939 定义了这个协议。POP 和SMTP一样,也是一种机制,Internet上大多数人通过它得到邮件。该协议规定每个用户只能有一个邮箱的支持。这就是它所能做的,而这也造成了许多混淆。使用 POP 时,用户熟悉的许多性能并不是由 POP 协议支持的,如查看有几封新邮件消息这一性能。这些性能内建于如 Eudora 或 Microsoft Outlook 之类的程序中,它们能记住一些事,诸如最近一次收到的邮件,还能计算出有多少是新的。所以当使用 JavaMail API 时,如果读者想要这类信息,就只能由自己来计算了。 

  IMAP(Internet Message Access Protocol),即Internet消息访问协议,是更高级的用于接收消息的协议,在 RFC 2060 中有它的定义。目前使用的IMAP版本为4,人们习惯将它称为 IMAP4。在用到 IMAP 时,邮件服务器必需支持这个协议。不能仅仅把使用 POP 的程序用于 IMAP,并指望它支持 IMAP 所有性能。假设邮件服务器支持 IMAP,基于 JavaMail 的程序可以利用这种情况--用户在服务器上可以有多个文件夹(folder),并且这些文件夹可以被多个用户共享。 
  因为有这一更高级的性能,您也许会认为所有用户都会使用 IMAP。事实并不是这样。要求服务器接收新消息,在用户请求时发送到用户手中,还要在每个用户的多个文件夹中维护消息。这样虽然能将消息集中备份,但随着用户长期的邮件夹越来越大,到磁盘空间耗尽时,每个用户都会受到损失。使用 POP,就能卸载邮件服务器上保存的消息了。 

  MIME(Multipurpose Internet Mail Extensions),即多用途Internet邮件扩展标准。它不是邮件传输协议,而是对传输内容的消息、附件及其它的内容定义了格式。这里有很多不同的RFC(Requirement of Comment)文档:RFC 822、RFC 2045、RFC 2046 和 RFC 2047。作为一个 JavaMail API 的用户,您通常不必对这些格式操心。无论如何,一定存在这些格式而且程序会用到它。 

二、例子 


 


1. import java.io.File;  
2. import java.io.FileOutputStream;  
3. import java.io.InputStream;  
4. import java.io.OutputStream;  
5. import java.io.UnsupportedEncodingException;  
6. import java.security.Security;  
7. import java.util.Date;  
8. import java.util.Enumeration;  
9. import java.util.Properties;  
10. import java.util.Vector;  
11.   
12. import javax.activation.DataHandler;  
13. import javax.activation.FileDataSource;  
14. import javax.mail.Authenticator;  
15. import javax.mail.BodyPart;  
16. import javax.mail.FetchProfile;  
17. import javax.mail.Folder;  
18. import javax.mail.Message;  
19. import javax.mail.MessagingException;  
20. import javax.mail.Multipart;  
21. import javax.mail.Part;  
22. import javax.mail.PasswordAuthentication;  
23. import javax.mail.Session;  
24. import javax.mail.Store;  
25. import javax.mail.Transport;  
26. import javax.mail.URLName;  
27. import javax.mail.internet.AddressException;  
28. import javax.mail.internet.InternetAddress;  
29. import javax.mail.internet.MimeBodyPart;  
30. import javax.mail.internet.MimeMessage;  
31. import javax.mail.internet.MimeMultipart;  
32. import javax.mail.internet.MimeUtility;  
33.   
34. /**
35.  * 使用Gmail发送邮件
36.  */  
37. public class GmailSenderAndFetch {  
38.   
39. private static String messageContentMimeType = "text/html; charset=gb2312";  
40.   
41. private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";  
42.   
43. public static Properties getProperties() {  
44.         Properties props = System.getProperties();  
45. "mail.smtp.host", "smtp.gmail.com");  
46. // Gmail提供的POP3和SMTP是使用安全套接字层SSL的  
47. "mail.smtp.socketFactory.class", SSL_FACTORY);  
48. "mail.smtp.socketFactory.fallback", "false");  
49. "mail.smtp.port", "465");  
50. "mail.smtp.socketFactory.port", "465");  
51.   
52. "mail.imap.socketFactory.class", SSL_FACTORY);  
53. "mail.imap.socketFactory.fallback", "false");  
54. "mail.imap.port", "993");  
55. "mail.imap.socketFactory.port", "993");  
56.   
57. "mail.pop3.socketFactory.class", SSL_FACTORY);  
58. "mail.pop3.socketFactory.fallback", "false");  
59. "mail.pop3.port", "995");  
60. "mail.pop3.socketFactory.port", "995");  
61.   
62. "mail.smtp.auth", "true");  
63. return props;  
64.     }  
65.   
66. /**
67.      * 构建邮件
68.      * 
69.      * @param username
70.      * @param password
71.      * @param receiver
72.      * @return
73.      * @throws AddressException
74.      * @throws MessagingException
75.      */  
76. @SuppressWarnings( { "unchecked", "serial" })  
77. public static Message buildMimeMessage(final String username,  
78. final String password, String receiver) throws AddressException,  
79.             MessagingException {  
80.         Session session = Session.getDefaultInstance(getProperties(),  
81. new Authenticator() {  
82. protected PasswordAuthentication getPasswordAuthentication() {  
83. return new PasswordAuthentication(username, password);  
84.                     }  
85.                 });  
86.   
87. new MimeMessage(session);  
88.           
89. //鉴别发送者,您可以使用setFrom()和setReplyTo()方法。  
90. //msg.setFrom(new InternetAddress("[发件人]"));  
91. "[发件人]"));//地址来源,没作用?  
92. "[回复时收件人]"));//回复时用的地址  
93. //消息接收者  
94.         msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(  
95. false));  
96. "JavaMail邮件发送");  
97. new Date());  
98.   
99. "How are you!这是一个测试!";  
100. // 邮件内容数据(Content)  
101. new Vector() {  
102.             {  
103. "D:/uploadDir/test.txt");  
104.             }  
105.         }));  
106.   
107. return msg;  
108.     }  
109.   
110. /**
111.      * 构建邮件的正文和附件
112.      * 
113.      * @param msgContent
114.      * @param attachedFileList
115.      * @return
116.      * @throws MessagingException
117.      */  
118. public static Multipart buildMimeMultipart(String msgContent,  
119. throws MessagingException {  
120. new MimeMultipart();// 多部分实现  
121.   
122. // 邮件正文  
123. new MimeBodyPart();// MIME邮件段体  
124. if (msgContent != null) {  
125.             mBodyContent.setContent(msgContent, messageContentMimeType);  
126. else {  
127. "", messageContentMimeType);  
128.         }  
129.         mPart.addBodyPart(mBodyContent);  
130.   
131. // 附件  
132.         String file;  
133.         String fileName;  
134. if (attachedFileList != null) {  
135. for (Enumeration fileList = attachedFileList.elements(); fileList  
136.                     .hasMoreElements();) {  
137.                 file = (String) fileList.nextElement();  
138. "/") + 1);  
139. new MimeBodyPart();  
140. //远程资源  
141. //URLDataSource uds=new URLDataSource(http://www.iteye.com/logo.gif);  
142. new FileDataSource(file);  
143. new DataHandler(fds));  
144.                 mBodyPart.setFileName(fileName);  
145.                 mPart.addBodyPart(mBodyPart);  
146.             }  
147.         }  
148.   
149. return mPart;  
150.     }  
151.   
152. /**
153.      * 字串解码
154.      * 
155.      * @param text
156.      * @return
157.      * @throws UnsupportedEncodingException
158.      */  
159. protected static String decodeText(String text)

标签:发邮件,String,new,JavaMail,import,mail,javax,邮件
From: https://blog.51cto.com/u_16104661/6258348

相关文章

  • 【java】javamail+freemarker生成邮件模板,并发送邮件
    一、前言      在上一篇博客中小编向大家介绍了发送带附件的邮件,实践一下也是不错的。这一篇博客是为下一篇博客进行铺垫的,因为项目中需要一个推送的功能,要把推送的信息灵活的显示到一个固有的模板上。所以为了达到这个目的,小编就引入了freemarker。下面向大家介绍。二、What......
  • 电子邮件系统 3----JavaMail POP3接收邮件示例 .
    1./**2.*CrazyItTest3.*使用JavaMail编写接收邮件示例4.*/5.package6.import7.import8.import9.import10.import11.import12.import13.import14.import15./**16.*@authorBillTu(tujiyue/iwtxokhtd)17.*May27,2011[10:04:20PM]18.......
  • 电子邮件系统 2----JavaMail 搜索指定邮件示例
    1./**2.*CrazyItTest3.*使用JavaMail搜索并删除指定邮件示例4.*/5.package6.import7.import8.import9.import10.import11.import12.import13.import14.import15.import16.import17.import18.import19.import20./**21.*@authorBi......
  • JavaMail收发邮件的步骤
     发邮件1)获取Sessionn()方法ii)New一个上面类的实例,设置用户名和密码 andmail.smtp.auth属性iv)同过Session的静态方法,获取一个Session实例2)生成Messagei)没有附件的邮件 第一步:new一个MimeMessage实例(根据Session) 第二步:给Message实例设置su......
  • python 发邮件 图片作附件
    importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartfromemail.mime.imageimportMIMEImage#邮件发件人和收件人信息sender_email='你的Gmail地址'sender_password='你的Gmail密码'recipient_email='收......
  • python发邮件|4-20
    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。首先,我们来构造一个最简单的纯文本邮件:fromemail.mime.textimportMIMETextmsg=MIMEText('hello......
  • 每次记歌词——使用Python自动发邮件提醒你记歌词
    今日鸡汤八骏日行三万里,穆王何事不重来。大家好,我是Python进阶者。前言前几天在Python交流群里边,【冫马讠成】大佬分享了一个有趣的代码,用于定时发送歌词到邮箱,觉得挺有意思,这里拿出来给大家分享。实现思路实现思路倒是不难,其一是Python网络爬虫,将网页上的歌词信息抓取到,然后存起......
  • Zabbix监控使用ping判断主机是否存活并发邮件报警
    一、在Zabbix服务器安装gcc和fpingyum-yinstallgccwgethttp://www.fping.org/dist/fping-3.10.tar.gztar-xffping-3.10.tar.gzcdfping-3.10./configure--prefix......
  • 发邮件 In App Email (实例)
    InAppEmailInthistutorialiwillbeshowingyouhowtodirectlyemailfromyourappFeatures: 1RoundRectButton Inappemailingisagreatfeaturefor......
  • Google推短信收发邮件服务Gmail SMS 造福非洲人民
    Google刚刚在非洲推出了一项新的邮件服务GmailSMS,即用户可以通过手机内置的短信功能(SMS)收发Gmail邮件。该服务将首先在加纳、尼日利亚和肯尼亚三国试用。这一举措意味着,......