javamail程式碼例子-java寫的郵件傳送-另一種傳送郵件的方法
阿新 • • 發佈:2019-01-31
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);//傳送出去 } }