天天看點

android 使用JavaMail

今天學習了一下JavaMail,javamail發送郵件确實是一個比較麻煩的問題不用第三方郵件程式。為了以後使用友善,自己寫了段代碼

android 使用JavaMail

Javamail-Android配置步驟:

  1. 下載下傳Android版本JavaMail包,additional.jar、mail.jar和activation.jar,下載下傳位址JavaMail-Android
  2. 在項目與src同一目錄級别下,建立檔案夾lib,将下載下傳的3個jar包放入該檔案夾
  3. 右鍵->Properties->Java Build Path->Libraries,選擇Add External JARs,找到項目下lib目錄的3個jar包

我的代碼有三個類:  

第一個類:MailSenderInfo.java

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

package

com.util.mail;

import

java.util.Properties;

public

class

MailSenderInfo {

// 發送郵件的伺服器的IP和端口

private

String mailServerHost;

private

String mailServerPort =

"25"

;

// 郵件發送者的位址

private

String fromAddress;

// 郵件接收者的位址

private

String toAddress;

// 登陸郵件發送伺服器的使用者名和密碼

private

String userName;

private

String password;

// 是否需要身份驗證

private

boolean

validate =

false

;

// 郵件主題

private

String subject;

// 郵件的文本内容

private

String content;

// 郵件附件的檔案名

private

String[] attachFileNames;  

public

Properties getProperties(){

Properties p =

new

Properties();

p.put(

"mail.smtp.host"

,

this

.mailServerHost);

p.put(

"mail.smtp.port"

,

this

.mailServerPort);

p.put(

"mail.smtp.auth"

, validate ?

"true"

:

"false"

);

return

p;

}

public

String getMailServerHost() {

return

mailServerHost;

}

public

void

setMailServerHost(String mailServerHost) {

this

.mailServerHost = mailServerHost;

}

public

String getMailServerPort() {

return

mailServerPort;

}

public

void

setMailServerPort(String mailServerPort) {

this

.mailServerPort = mailServerPort;

}

public

boolean

isValidate() {

return

validate;

}

public

void

setValidate(

boolean

validate) {

this

.validate = validate;

}

public

String[] getAttachFileNames() {

return

attachFileNames;

}

public

void

setAttachFileNames(String[] fileNames) {

this

.attachFileNames = fileNames;

}

public

String getFromAddress() {

return

fromAddress;

}

public

void

setFromAddress(String fromAddress) {

this

.fromAddress = fromAddress;

}

public

String getPassword() {

return

password;

}

public

void

setPassword(String password) {

this

.password = password;

}

public

String getToAddress() {

return

toAddress;

}

public

void

setToAddress(String toAddress) {

this

.toAddress = toAddress;

}

public

String getUserName() {

return

userName;

}

public

void

setUserName(String userName) {

this

.userName = userName;

}

public

String getSubject() {

return

subject;

}

public

void

setSubject(String subject) {

this

.subject = subject;

}

public

String getContent() {

return

content;

}

public

void

setContent(String textContent) {

this

.content = textContent;

}

}

第二個類:MultiMailsender.java

View Code

第三個類:MyAuthenticator.java

View Code

下面給出使用上面三個類的代碼:

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public

static

void

main(String[] args){

//這個類主要是設定郵件

MultiMailSenderInfo mailInfo =

new

MultiMailSenderInfo();

mailInfo.setMailServerHost(

"smtp.163.com"

);

mailInfo.setMailServerPort(

"25"

);

mailInfo.setValidate(

true

);

mailInfo.setUserName(

"[email protected]"

);

mailInfo.setPassword(

"**********"

);

//您的郵箱密碼

mailInfo.setFromAddress(

"[email protected]"

);

mailInfo.setToAddress(

"[email protected]"

);

mailInfo.setSubject(

"設定郵箱标題"

);

mailInfo.setContent(

"設定郵箱内容"

);

String[] receivers =

new

String[]{

"***@163.com"

,

"***@tom.com"

};

String[] ccs = receivers; mailInfo.setReceivers(receivers);

mailInfo.setCcs(ccs);

//這個類主要來發送郵件

MultiMailsender sms =

new

MultiMailsender();

sms.sendTextMail(mailInfo);

//發送文體格式

MultiMailsender.sendHtmlMail(mailInfo);

//發送html格式

MultiMailsender.sendMailtoMultiCC(mailInfo);

//發送抄送

最後,給出朋友們幾個注意的地方:  

1、使用此代碼你可以完成你的javamail的郵件發送功能、發多個郵箱。三個類缺一不可。  

2、這三個類我打包是用的com.util.mail包,如果不喜歡,你可以自己改,但三個類檔案必須在同一個包中  

3、不要使用你剛剛注冊過的郵箱在程式中發郵件,如果你的163郵箱是剛注冊不久,那你就不要使用“smtp.163.com”。因為你發不出去。剛注冊的郵箱是不會給你這種權限的,也就是你不能通過驗證。要使用你經常用的郵箱,而且時間比較長的。  

4、另一個問題就是mailInfo.setMailServerHost("smtp.163.com");與mailInfo.setFromAddress("[email protected]");這兩句話。即如果你使用163smtp伺服器,那麼發送郵件位址就必須用163的郵箱,如果不的話,是不會發送成功的。  

5、關于javamail驗證錯誤的問題,網上的解釋有很多,但我看見的隻有一個。就是我的第三個類。你隻要複制全了代碼,我想是不會有問題的。

6、 然後在Android項目中添加網絡通路權限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

原文位址: http://www.cnblogs.com/peakzheng/archive/2012/02/04/2338671.html