zoukankan      html  css  js  c++  java
  • POP3_使用SSL链接邮箱并获取邮件

    Gmail目前已经启用了POP3和SMTP服务,与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:
    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    }
  • 相关阅读:
    129. Sum Root to Leaf Numbers
    113. Path Sum II
    114. Flatten Binary Tree to Linked List
    112. Path Sum
    100. Same Tree
    300. Longest Increasing Subsequence
    72. Edit Distance
    自定义js标签库
    JS 实现Table相同行的单元格自动合并示例代码
    mysql 高版本only_full_group_by 错误
  • 原文地址:https://www.cnblogs.com/gisblogs/p/4362622.html
Copyright © 2011-2022 走看看