重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Gmail目前已经启用了POP3和SMTP服务,与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:
成都创新互联是一家专注于成都网站建设、成都网站设计与策划设计,环县网站建设哪家好?成都创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:环县等地区。环县做网站价格咨询:18982081108
1. [代码]GmailFetch.java 跳至 [1] [2] [全屏预览]
01 package lius.javamail.ssl;
02
03 import java.io.UnsupportedEncodingException;
04 import java.security.*;
05 import java.util.Properties;
06 import javax.mail.*;
07 import javax.mail.internet.InternetAddress;
08 import javax.mail.internet.MimeUtility;
09
10 /**
11 * 用于收取Gmail邮件
12 * @author Winter Lau
13 */
14 public 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. [代码]GmailSender.java
01 package lius.javamail.ssl;
02
03 import java.security.Security;
04 import java.util.Date;
05 import java.util.Properties;
06
07 import javax.mail.Authenticator;
08 import javax.mail.Message;
09 import javax.mail.MessagingException;
10 import javax.mail.PasswordAuthentication;
11 import javax.mail.Session;
12 import javax.mail.Transport;
13 import javax.mail.internet.AddressException;
14 import javax.mail.internet.InternetAddress;
15 import javax.mail.internet.MimeMessage;
16
17 /**
18 * 使用Gmail发送邮件
19 * @author Winter Lau
20 */
21 public 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 }
ListString too=new ArrayListString();
too.add("****@163.com");
// too.add("******@163.com");
InternetAddress[] to_mail = new InternetAddress[too.size()];
for (int i = 0; i too.size(); i++) { // 设置接收邮件人的地址
to_mail[i] = new InternetAddress(String.valueOf(too.get(i)));
}
messageHelper.setTo(to_mail);
不要用for循环 用internetAddress[] . 我前几天也是跟你一样.
方法:
1.前提准备工作:
首先,邮件的发送方要开启POP3 和SMTP服务--即发送qq邮件的账号要开启POP3 和SMTP服务
2.开启方法:
登陆qq邮箱
3.点击 设置
4.点击—-账户
5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 —点击开启
6.送短信 —–点击确定
7.稍等一会,很得到一个授权码! –注意:这个一定要记住,一会用到
8.点击保存修改 —OK 完成
9.java 测试代码:
package cn.cupcat.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendmailUtil {
public static void main(String[] args) throws AddressException, MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");//设置是否显示debug信息 true 会在控制台显示相关信息
//得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
//设置发件人邮箱地址
message.setFrom(new InternetAddress("123456789@qq.com"));
//设置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("987654321@qq.com") });
//设置邮件标题
message.setSubject("这是第一封Java邮件");
//设置邮件内容
message.setText("内容为: 这是第一封java发送来的邮件。");
//得到邮差对象
Transport transport = session.getTransport();
//连接自己的邮箱账户
transport.connect("123456789@qq.com", "vvctybgbvvophjcj");//密码为刚才得到的授权码
//发送邮件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.运行就会发出邮件了。。。。
下面是我收到邮件的截图,当然我把源码中的邮件地址都是修改了,不是真实的,你们测试的时候,可以修改能你们自己的邮箱。最后,祝你也能成功,如果有什么问题,可以一起讨论!
注意事项
得到的授权码一定要保存好,程序中要使用