1. 程式人生 > >javamail程式碼例子-java寫的郵件傳送-另一種傳送郵件的方法

javamail程式碼例子-java寫的郵件傳送-另一種傳送郵件的方法

package com.cs.mail;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;

/**
 * 還有一種傳送郵件的方法:
 * 用outlook等工具寫好檔案,另存為eml格式的檔案,然後上傳到伺服器上,
 * 然後伺服器會把這個檔案讀取到Message物件裡,然後用Transport傳送出去即可
 * 這個方法就簡略了編寫構造郵件內容的程式碼。
 * 不過,我覺得這個方法應該不是很有用,如果我能用outlook,那麼我直接發出去不就好了嗎,為什麼要用程式去傳送,
 * 如果郵件內容要我自己編寫,那還需要程式來幹什麼.
 * 用程式的目的是全部都是自動的,可能是每天由程式構造郵件,然後程式自己按時傳送出去。
 */
public class Demo2 {
	public static void main(String[] args) throws Exception{
		Properties props = new Properties();
		props.put("mail.smtp.auth","true");//mail.smtp.auth屬性設定為true,表示要做驗證
		props.put("mail.transport.protocal","smtp");
		props.put("mail.smtp.host","smtp.126.com");
		
		Session session = Session.getInstance(props,
				/*建立一個匿名內部類,並且覆蓋了父類的方法,這個模式叫做策略模式*/
				new Authenticator(){
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication("發件人的使用者名稱","密碼");
					}
				}
		);
		session.setDebug(true);//設定debug為true時,表示要在控制檯打印出傳送郵件時的相關資訊
		InputStream is = new FileInputStream("D:/mail/hello.eml");
		Message msg = new MimeMessage(session,is);//用eml檔案構造成Message物件
		
		Transport.send(msg);//傳送出去
		
		
		
		
		
	}
}