JavaMail和James的機密花園。本站提示廣大學習愛好者:(JavaMail和James的機密花園)文章只能為提供參考,不一定能成為您想要的結果。以下是JavaMail和James的機密花園正文
JavaMail,望文生義,提供應開發者處置電子郵件相關的編程接口。它是Sun發布的用來處置email的API。它可以方便地執行一些常用的郵件傳輸。我們可以基於JavaMail開收回相似於Microsoft Outlook的使用順序。
JavaMail包中用於處置電子郵件的中心類是:Session,Message,Address,Authenticator,Store,Transport, Folder等。Session定義了一個根本的郵件會話,它需求從Properties中讀取相似於郵件服務器,用戶名和密碼等信息。不過JDK中並沒有包括,運用JavaMail發送郵件需求運用Sun發布的mail.jar和activtion.jar兩個包。
郵件協議:
SMTP協議:Simple Mail Transfer Protocol,即復雜郵件傳輸協議,用於發送電子郵件
POP3協議:Post Office Protocol 3,即郵局協議的第三個版本,用於接納郵件
IMAP協議:Internet Message Access Protocol,即互聯網音訊訪問協議,是POP3的替代協議
JavaMail發郵件的流程:
1.搭建James郵件服務器
2.裝置OutLook[郵件客戶端]
3.配置outLook郵件客戶端
4.搭建James郵件服務器
james是apache的一個開源項目,純java完成。
首先我們需求下載apache-james-2.3.2.zip(批:http://pan.baidu.com/s/1pJoyg7h)
其次運轉bin目錄下的run.bat即可啟動服務器
然後運轉cmd命令[Telnet localhost 4555]
最後經過apps\james\SAR-INF\config.xml配置服務器(修正節點)
輸出產品秘鑰(可選,測試的話,不用輸出)
產品秘鑰:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT
創立用戶賬號,依據Telnet localhost 4555,停止銜接,
用戶名和密碼默許為root
進入help,停止添加賬戶(adduser)
按要求裝置,下一步即可,留意上面這個:
hosts文件:
裝置完成,停止測試:
需求:賬戶收到由javaMail所發送的義務,以及附件信息。
中心代碼:
創立一個類EmailAuthenticator並承繼自Authenticator,並植入用戶名和密碼
創立Mail類(設置郵件信息):
public class Mail { private String mailServer,from,to,mailSubject,mailContent; private String username,password; public Mail(){ //設置郵件信息 //停止認證登錄的用戶名 username="[email protected]"; //認證密碼 password="hq"; //認證的郵箱對應的郵件服務器 mailServer="192.168.17.176"; //發件人信息 from="wj"; //收件人信息 to="[email protected]"; //郵件標題 mailSubject="我們都是好孩子333"; //郵件內容 mailContent="這是一封測試郵件!如有相同,純屬不能夠"; } //設置郵件服務器 @SuppressWarnings("static-access") public void send(){ Properties prop=System.getProperties(); //指定郵件server prop.put("mail.smtp.host", mailServer); //能否開啟認證 prop.put("mail.smtp.auth", "true"); //smtp協議的 prop.put("mail.smtp.port", "25"); //發生Session服務 EmailAuthenticator mailauth=new EmailAuthenticator(username, password); Session mailSession=Session.getInstance(prop,(Authenticator)mailauth); try { //封裝Message對象 Message message=new MimeMessage(mailSession); message.setFrom(new InternetAddress(from)); //發件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人 message.setSubject(mailSubject); //設置內容(設置字符集處置亂碼問題) message.setContent(mailContent,"text/html;charset=gbk"); message.setSentDate(new Date()); //創立Transport實例,發送郵件 Transport tran=mailSession.getTransport("smtp"); tran.send(message,message.getAllRecipients()); tran.close(); } catch (Exception e) { e.printStackTrace(); } }
測試類:
public class MyTest { public static void main(String[] args) { Mail mail=new Mail(); mail.send(); System.out.println("success!"); } }
七、發送帶附件的Mail
public class MailWithAttachment { private JavaMailSender mailSender; //必需運用 JavaMailSender public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void send() throws MessagingException,IOException{ MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); helper.setFrom("[email protected]"); helper.setTo("[email protected]"); helper.setSubject("生活生活"); helper.setText("生活不止眼前的苟且!!!"); //添加附件1 ClassPathResource file1 = new ClassPathResource( "/cn/bdqn/attachfiles/test.doc"); helper.addAttachment(file1.getFilename(), file1.getFile()); //添加附件2:附件的文件名為中文時,需求對文件名停止編碼轉換,處理亂碼問題 ClassPathResource file2 = new ClassPathResource( "/cn/bdqn/attachfiles/附件測試文件.doc"); helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile()); mailSender.send(mimeMessage); } }
測試類:
public class MailTest { public static void main(String[] args){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); /*測試帶附件的郵件*/ try{ MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment"); mailWithAttach.send(); }catch(Exception e){ System.out.print(e.toString()); } } }
applicationContext.xml:
內在壓力添加時,就應加強內在的動力。
--- 勸誡自己