程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 最近想寫一個郵箱自動驗證功能,在網上看了很多,寫到自己上面出了很多問題,記錄下來給後面的人一個參考,網上寫到

最近想寫一個郵箱自動驗證功能,在網上看了很多,寫到自己上面出了很多問題,記錄下來給後面的人一個參考,網上寫到

編輯:JAVA綜合教程

最近想寫一個郵箱自動驗證功能,在網上看了很多,寫到自己上面出了很多問題,記錄下來給後面的人一個參考,網上寫到


package com.app.tools;

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.InternetAddress;
import javax.mail.internet.MimeMessage;



public class SendEmail {

//    public static final String HOST = "mx3.qq.com";
    public static final String HOST = "smtp.163.com";
    public static final String PROTOCOL = "smtp";
    public static final int PORT = 25;    /*465    這是QQ的端口*/
    public static final String FROM = "[email protected]";//發件人的email
    public static final String PWD = "xxxxxxx";//發件人密碼


    private static Session getSession() {
        Properties props = new Properties();
        props.put("mail.smtp.host", HOST);//設置服務器地址  
        props.put("mail.store.protocol" , PROTOCOL);//設置協議  
        props.put("mail.smtp.port", PORT);//設置端口  
        props.put("mail.smtp.auth" , "true");

        Authenticator authenticator = new Authenticator() {

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(FROM, PWD);
            }

        };
        Session session = Session.getDefaultInstance(props , authenticator);

        return session;
    }

    public static void send(String toEmail , String content) {
        Session session = getSession();
        try {
            System.out.println("--send--"+content);
            // Instantiate a message  
            Message msg = new MimeMessage(session);

            //Set message attributes  
            msg.setFrom(new InternetAddress(FROM));
            InternetAddress[] address = {new InternetAddress(toEmail)};
            msg.setRecipients(Message.RecipientType.TO, address);
            msg.setSubject("賬號激活郵件");
            msg.setSentDate(new Date());
            msg.setContent(content,"text/html;charset=utf-8");


            //Send the message  
            Transport.send(msg);
        }
        catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new SendEmail().send("[email protected]","dsfsdf");
        System.out.println("success");
    }
} 

請注意以下要點:

1、是否開啟了認證,QQ郵箱、163郵箱均要開啟認證

2、javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;      //連接超時  

解決參考:將這個屬性的true加上引號,請奇葩的異常! 注意:如果沒有這條屬性,可能或拋出  需要認證異常(Required  Authentication) 這個異常一般是由1、2造成的

3、在設置屬性的時候,一定要注意弄清楚使用郵箱的地址和端口。  javax.mail.AuthenticationFailedException

 QQ郵箱端口:  mx3.qq.com  端口:465         163郵箱:smtp.163.com   端口:25       這是都是發送郵件時使用的smtp協議所用。如果是收郵件則用的是pop3協議,那又不一樣了。這個請自行查找

4、

在使用QQ郵箱發送郵件的時候,出現這個異常。 查了一下,官方說法是發送太頻繁所以被鎖定了!目前還沒有解決。明天試試看看能不能成功(未成功)

 

以上是幾個容易出現的異常,解決之後,其他異常可根據具體拋出的信息解決!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved