茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729591 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
HoneyMoon_Day4_0044.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

爪哇咖啡屋 : [分享]JavaMail

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]JavaMail 郵件開發

JavaMail郵件開發

(api + 配置)

開發中,郵件的應用?

-à 註冊,填寫生日; 後期系統會自動傳送生日祝賀

-à 發貨,發貨提醒!郵件提醒!

郵件:

1.發郵件;【程式中如何發郵件!】

2.收郵件;【很多客戶端工具, foxmail 】

郵件開發準備:

準備工作, 環境搭建:

1. 本地搭建一個郵件伺服器

-à 易郵伺服器,eyoumailserversetup.exe

2. 新建郵箱賬號

張三給李四發郵件。

步驟1:

新建域名: 工具, 伺服器設定, 單域名框中輸入 itcast.com

步驟2:

新建郵箱賬號: zhangsan@itcast.com、 lisi@itcast.com

3. 安裝foxmail

配置郵件傳送伺服器(smtp): localhost 25

郵件接收伺服器(pop3): localhost 110

再新建賬號,就可以接收郵件了!



郵件開發之普通郵件:

JavaMail開發,先引入jar檔案:


activation.jar 【如果使用jdk1.6或以上版本,可以不用這個jar檔案】

mail.jar 【郵件傳送核心包】


package cn.itcast.mail;
import java.util.Date;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage.RecipientType;
import org.junit.Test;
/**
* 1. 傳送一封普通郵件
* @author Jie.Yuan
*
*/
public class App_1SendMail {
@Test
public void testSend() throws Exception {
//0. 郵件引數
Properties prop = new Properties();
prop.put("mail.transport.protocol", "smtp"); // 指定協議
prop.put("mail.smtp.host", "localhost"); // 主機 stmp.qq.com
prop.put("mail.smtp.port", 25); // 埠
prop.put("mail.smtp.auth", "true"); // 使用者密碼認證
prop.put("mail.debug", "true"); // 除錯模式
//1. 建立一個郵件的會話
Session session = Session.getDefaultInstance(prop);
//2. 建立郵件體物件 (整封郵件物件)
MimeMessage message = new MimeMessage(session);
//3. 設定郵件體引數:
//3.1 標題
message.setSubject("我的第一封郵件 ");
//3.2 郵件傳送時間
message.setSentDate(new Date());
//3.3 發件人
message.setSender(new InternetAddress("zhangsan@itcast.com"));
//3.4 接收人
message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
//3.5內容
//message.setText("你好,已經發送成功! 正文...."); // 簡單純文字郵件
// 郵件中含有超連結
//message.setText("百度");
message.setContent("百度", "text/html;charset=UTF-8");
message.saveChanges(); // 儲存郵件(可選)
//4. 傳送
Transport trans = session.getTransport();
trans.connect("zhangsan", "123");
// 傳送郵件
trans.sendMessage(message, message.getAllRecipients());
trans.close();
}
}
Junit測試資訊:
DEBUG: JavaMail version 1.4.1
DEBUG: not loading file: C:\myclipse\binary\com.sun.java.jdk8.win32.x86_64_1.8.0.v112\jre\lib\javamail.providers
DEBUG: java.io.FileNotFoundException: C:\myclipse\binary\com.sun.java.jdk8.win32.x86_64_1.8.0.v112\jre\lib\javamail.providers (系統找不到指定的檔案。)
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.providers
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc],
com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc],
com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc],
com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc],
com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc],
com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc],
imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc],
smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc],
pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc],
pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc],
smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.address.map
DEBUG: not loading file: C:\myclipse\binary\com.sun.java.jdk8.win32.x86_64_1.8.0.v112\jre\lib\javamail.address.map
DEBUG: java.io.FileNotFoundException: C:\myclipse\binary\com.sun.java.jdk8.win32.x86_64_1.8.0.v112\jre\lib\javamail.address.map (系統找不到指定的檔案。)
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
220 ESMTP 易郵郵件伺服器 5.2.2004.02.18 SMTP Service Ready
DEBUG SMTP: connected to host "localhost", port: 25
EHLO I0QZ95XPAAXLPJP
250-AUTH=LOGIN
250 AUTH LOGIN
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
emhhbmdzYW4=
334 UGFzc3dvcmQ6
MTIz
235 OK
DEBUG SMTP: use8bit false
MAIL FROM:<zhangsan@itcast.com>
250 OK
RCPT TO:<lisi@itcast.com>
250 OK
DEBUG SMTP: Verified Addresses
DEBUG SMTP: lisi@itcast.com
DATA
354 send the mail data, end with .
Date: Tue, 28 Nov 2017 23:30:42 +0800 (CST)
Sender: lisi@itcast.com
To: lisi@itcast.com
Message-ID: <1617791695.0.1511883042518.JavaMail.Administrator@I0QZ95XPAAXLPJP>
Subject: =?GBK?B?ztK1xLXa0ru34tPKvP4J?=
MIME-Version: 1.0
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: quoted-printable
=E7=99=BE=E5=BA=A6
.
250
QUIT
221 SMTP SERVICE CLOSED



郵件開發之帶圖片 App_2SendWithImg.java
package cn.itcast.mail;
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage.RecipientType;
import org.junit.Test;
/**
* 帶圖片資源的郵件
* @author Jie.Yuan
*
*/
public class App_2SendWithImg {
// 初始化引數
private static Properties prop;
// 發件人
private static InternetAddress sendMan = null;
static {
prop = new Properties();
prop.put("mail.transport.protocol", "smtp"); // 指定協議
prop.put("mail.smtp.host", "localhost"); // 主機 stmp.qq.com
prop.put("mail.smtp.port", 25); // 埠
prop.put("mail.smtp.auth", "true"); // 使用者密碼認證
prop.put("mail.debug", "true"); // 除錯模式
try {
sendMan = new InternetAddress("zhangsan@itcast.com");
} catch (AddressException e) {
throw new RuntimeException(e);
}
}
@Test
public void testSend() throws Exception {
// 1. 建立郵件會話
Session session = Session.getDefaultInstance(prop);
// 2. 建立郵件物件
MimeMessage message = new MimeMessage(session);
// 3. 設定引數:標題、發件人、收件人、傳送時間、內容
message.setSubject("帶圖片郵件");
message.setSender(sendMan);
message.setRecipient(RecipientType.TO, new InternetAddress("zhangsan@itcast.com"));
message.setSentDate(new Date());
/***************設定郵件內容: 多功能使用者郵件 (related)*******************/
// 4.1 構建一個多功能郵件塊
MimeMultipart related = new MimeMultipart("related");
// 4.2 構建多功能郵件塊內容 = 左側文字 + 右側圖片資源
MimeBodyPart content = new MimeBodyPart();
MimeBodyPart resource = new MimeBodyPart();
// 設定具體內容: a.資源(圖片)
String filePath = App_2SendWithImg.class.getResource("8.jpg").getPath();
DataSource ds = new FileDataSource(new File(filePath));
DataHandler handler = new DataHandler(ds);
resource.setDataHandler(handler);
resource.setContentID("8.jpg"); // 設定資源名稱,給外來鍵引用
// 設定具體內容: b.文字
content.setContent(" 好哈哈!", "text/html;charset=UTF-8");
related.addBodyPart(content);
related.addBodyPart(resource);
/*******4.3 把構建的複雜郵件快,新增到郵件中********/
message.setContent(related);
// 5. 傳送
Transport trans = session.getTransport();
trans.connect("zhangsan", "123");
trans.sendMessage(message, message.getAllRecipients());
trans.close();
}
}


郵件開發之帶圖片 + 附件App_3ImgAndAtta.java
package cn.itcast.mail;
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage.RecipientType;
import org.junit.Test;
/**
* 3. 帶圖片資源以及附件的郵件
* @author Jie.Yuan
*
*/
public class App_3ImgAndAtta {
// 初始化引數
private static Properties prop;
// 發件人
private static InternetAddress sendMan = null;
static {
prop = new Properties();
prop.put("mail.transport.protocol", "smtp"); // 指定協議
prop.put("mail.smtp.host", "localhost"); // 主機 stmp.qq.com
prop.put("mail.smtp.port", 25); // 埠
prop.put("mail.smtp.auth", "true"); // 使用者密碼認證
prop.put("mail.debug", "true"); // 除錯模式
try {
sendMan = new InternetAddress("zhangsan@itcast.com");
} catch (AddressException e) {
throw new RuntimeException(e);
}
}
@Test
public void testSend() throws Exception {
// 1. 建立郵件會話
Session session = Session.getDefaultInstance(prop);
// 2. 建立郵件物件
MimeMessage message = new MimeMessage(session);
// 3. 設定引數:標題、發件人、收件人、傳送時間、內容
message.setSubject("帶圖片郵件");
message.setSender(sendMan);
message.setRecipient(RecipientType.TO, new InternetAddress("zhangsan@itcast.com"));
message.setSentDate(new Date());
/*
* 帶附件(圖片)郵件開發
*/
// 構建一個總的郵件塊
MimeMultipart mixed = new MimeMultipart("mixed");
// ---> 總郵件快,設定到郵件物件中
message.setContent(mixed);
// 左側: (文字+圖片資源)
MimeBodyPart left = new MimeBodyPart();
// 右側: 附件
MimeBodyPart right = new MimeBodyPart();
// 設定到總郵件塊
mixed.addBodyPart(left);
mixed.addBodyPart(right);
/******附件********/
String attr_path = this.getClass().getResource("a.docx").getPath();
DataSource attr_ds = new FileDataSource(new File(attr_path));
DataHandler attr_handler = new DataHandler(attr_ds);
right.setDataHandler(attr_handler);
right.setFileName("a.docx");
/***************設定郵件內容: 多功能使用者郵件 (related)*******************/
// 4.1 構建一個多功能郵件塊
MimeMultipart related = new MimeMultipart("related");
// ----> 設定到總郵件快的左側中
left.setContent(related);
// 4.2 構建多功能郵件塊內容 = 左側文字 + 右側圖片資源
MimeBodyPart content = new MimeBodyPart();
MimeBodyPart resource = new MimeBodyPart();
// 設定具體內容: a.資源(圖片)
String filePath = App_3ImgAndAtta.class.getResource("8.jpg").getPath();
DataSource ds = new FileDataSource(new File(filePath));
DataHandler handler = new DataHandler(ds);
resource.setDataHandler(handler);
resource.setContentID("8.jpg"); // 設定資源名稱,給外來鍵引用
// 設定具體內容: b.文字
content.setContent(" 好哈哈!", "text/html;charset=UTF-8");
related.addBodyPart(content);
related.addBodyPart(resource);
// 5. 傳送
Transport trans = session.getTransport();
trans.connect("zhangsan", "888");
trans.sendMessage(message, message.getAllRecipients());
trans.close();
}
}





原文出處: JavaMail郵件開發 - IT閱讀
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|