如果程序出現 454 Authentication failed, please open smtp flag first! 錯誤,那么一般是郵箱沒有開通POP3/SMTP服務,登錄郵箱,在設置中開啟該服務即可 !
另外需要的jar包如下: imap.jar, mail.jar, smtp.jar, 可以自己在網上下載。
package com.hzml.serve; import java.io.IOException; import java.util.Date; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/MailResponse.servlet") public class MailResponse extends HttpServlet { private static final long serialVersionUID = 1L; public MailResponse() { super(); } private void process(HttpServletRequest request, HttpServletResponse response) { try{ String pwd = "hjzgg5211314";//發件人郵箱密碼 String mailfrom = request.getParameter("emailFrom"); //網易的郵箱 String wangyiFrom = mailfrom.substring(0, mailfrom.indexOf('@'));//網易郵箱的用戶名 String tu = "163.com"; //你郵箱的后綴域名 String tto= request.getParameter("emailTo"); //接收郵件的郵箱 String ttitle= "在線軟件工程管理員回復!"; String tcontent = request.getParameter("messageTo"); Properties props=new Properties(); props.put("mail.smtp.host","smtp."+tu);//郵箱SMTP服務器地址端口 props.put("mail.smtp.auth","true");//這樣才能通過驗證 Session s=Session.getInstance(props); s.setDebug(true); MimeMessage message=new MimeMessage(s); //給消息對象設置發件人/收件人/主題/發信時間 InternetAddress from=new InternetAddress(mailfrom); //發件人的qq郵箱 message.setFrom(from); InternetAddress to=new InternetAddress(tto);//收件人的郵箱 message.setRecipient(Message.RecipientType.TO,to); message.setSubject(ttitle); message.setSentDate(new Date()); //給消息對象設置內容 BodyPart mdp=new MimeBodyPart();//新建一個存放信件內容的BodyPart對象 mdp.setContent(tcontent,"text/html;charset=gb2312");//給BodyPart對象設置內容和格式/編碼方式 Multipart mm=new MimeMultipart();//新建一個MimeMultipart對象用來存放BodyPart對 //象(事實上可以存放多個) mm.addBodyPart(mdp);//將BodyPart加入到MimeMultipart對象中(可以加入多個BodyPart) message.setContent(mm);//把mm作為消息對象的內容 message.saveChanges(); Transport transport=s.getTransport("smtp"); transport.connect("smtp."+tu, wangyiFrom, pwd); //這里的wangyiFrom為發件人網易賬號 transport.sendMessage(message,message.getAllRecipients()); transport.close(); }catch(Exception e){ e.printStackTrace(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub process(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub process(request, response); } }