




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在Android中利用Javamail发送Email
怎么在Android中利用Javamail发送Email?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。将activation.jar,additionnal.jar,mail.jar放到项目的libs文件夹。然后在项目中选中这三个包,右击->BuildPath->AddtobuildPath.添加成功后项目就像这样.项目中添加Mail类package
com.example.mailtest;
import
java.util.Date;
import
java.util.Properties;
import
javax.activation.CommandMap;
import
javax.activation.DataHandler;
import
javax.activation.DataSource;
import
javax.activation.FileDataSource;
import
javax.activation.MailcapCommandMap;
import
javax.mail.BodyPart;
import
javax.mail.Multipart;
import
javax.mail.PasswordAuthentication;
import
javax.mail.Session;
import
javax.mail.Transport;
import
ernet.InternetAddress;
import
ernet.MimeBodyPart;
import
ernet.MimeMessage;
import
ernet.MimeMultipart;
public
class
extends
javax.mail.Authenticator
{
private
String
_user;
private
String
_pass;
private
String[]
_to;
private
String
_from;
private
String
_port;
private
String
_sport;
private
String
_host;
private
String
_subject;
private
String
_body;
private
boolean
_auth;
private
boolean
_debuggable;
private
Multipart
_multipart;
public
Mail()
{
_host
=
"";
//
default
smtp
server
_port
=
"465";
//
default
smtp
port
_sport
=
"465";
//
default
socketfactory
port
_user
=
"";
//
username
_pass
=
"";
//
password
_from
=
"";
//
sent
from
_subject
=
"";
//
subject
_body
=
"";
//
body
_debuggable
=
false;
//
debug
mode
on
or
off
-
default
off
_auth
=
true;
//
smtp
authentication
-
default
on
_multipart
=
new
MimeMultipart();
//
There
is
something
wrong
with
MailCap,
javamail
can
not
find
a
handler
for
the
multipart/mixed
part,
so
this
bit
needs
to
be
added.
MailcapCommandMap
mc
=
(MailcapCommandMap)
CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;;
x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;;
x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;;
x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;;
x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;;
x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
}
public
Mail(String
user,
String
pass)
{
this();
_user
=
user;
_pass
=
pass;
}
public
void
setTo(String[]
toArr)
{
this._to
=
toArr;
}
public
void
setFrom(String
string)
{
this._from
=
string;
}
public
void
setSubject(String
string)
{
this._subject
=
string;
}
public
boolean
send()
throws
Exception
{
Properties
props
=
_setProperties();
if(!_user.equals("")
&&
!_pass.equals("")
&&
_to.length
>
0
&&
!_from.equals("")
&&
!_subject.equals("")
&&
!_body.equals(""))
{
Session
session
=
Session.getInstance(props,
this);
MimeMessage
msg
=
new
MimeMessage(session);
msg.setFrom(new
InternetAddress(_from));
InternetAddress[]
addressTo
=
new
InternetAddress[_to.length];
for
(int
i
=
0;
i
<
_to.length;
i++)
{
addressTo[i]
=
new
InternetAddress(_to[i]);
}
msg.setRecipients(MimeMessage.RecipientType.TO,
addressTo);
msg.setSubject(_subject);
msg.setSentDate(new
Date());
//
setup
message
body
BodyPart
messageBodyPart
=
new
MimeBodyPart();
messageBodyPart.setText(_body);
_multipart.addBodyPart(messageBodyPart);
//
Put
parts
in
message
msg.setContent(_multipart);
//
send
Transport.send(msg);
return
true;
}
else
{
return
false;
}
}
public
void
addAttachment(String
filename)
throws
Exception
{
BodyPart
messageBodyPart
=
new
MimeBodyPart();
DataSource
source
=
new
FileDataSource(filename);
messageBodyPart.setDataHandler(new
DataHandler(source));
messageBodyPart.setFileName(filename);
_multipart.addBodyPart(messageBodyPart);
}
@Override
public
PasswordAuthentication
getPasswordAuthentication()
{
return
new
PasswordAuthentication(_user,
_pass);
}
private
Properties
_setProperties()
{
Properties
props
=
new
Properties();
props.put("mail.smtp.host",
_host);
if(_debuggable)
{
props.put("mail.debug",
"true");
}
if(_auth)
{
props.put("mail.smtp.auth",
"true");
}
props.put("mail.smtp.port",
_port);
props.put("mail.smtp.socketFactory.port",
_sport);
props.put("mail.smtp.socketFactory.class",
".ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback",
"false");
return
props;
}
//
the
getters
and
setters
public
String
getBody()
{
return
_body;
}
public
void
setBody(String
_body)
{
this._body
=
_body;
}
//
more
of
the
getters
and
setters
…..
}MailActivity调用package
com.example.mailtest;
import
java.util.Properties;
import
javax.mail.Address;
import
javax.mail.Message;
import
javax.mail.Session;
import
javax.mail.Transport;
import
ernet.InternetAddress;
import
ernet.MimeMessage;
import
android.os.AsyncTask;
import
android.os.Bundle;
import
android.os.Handler;
import
android.app.Activity;
import
android.app.ProgressDialog;
import
android.util.Log;
import
android.view.Menu;
import
android.view.View;
import
android.widget.Button;
import
android.widget.Toast;
public
class
MailActivity
extends
Activity
{
private
Button
sendBtn;
private
String
username;
private
String
password;
private
Handler
sendHandler;
private
ProgressDialog
progressDialog;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mail);
sendBtn=(Button)findViewById(R.id.btnSend);
sendHandler
=
new
Handler();
sendBtn.setOnClickListener(new
View.OnClickListener()
{
public
void
onClick(View
v)
{
SendTask
sTask
=
new
SendTask();
sTask.execute();
}
});
}
@Override
public
boolean
onCreateOptionsMenu(Menu
menu)
{
//
Inflate
the
menu;
this
adds
items
to
the
action
bar
if
it
is
present.
getMenuInflater().inflate(R.menu.activity_mail,
menu);
return
true;
}
class
SendTask
extends
AsyncTask<Integer,
Integer,
String>{
//后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值
类型
@Override
protected
void
onPreExecute()
{
//第一个执行方法
Toast.makeText(getApplicationContext(),
"Begin
Send!",
Toast.LENGTH_SHORT).show();
super.onPreExecute();
}
@Override
protected
String
doInBackground(Integer...
params)
{
//第二个执行方法,onPreExecute()执行完后执行
//
TODO
Auto-generated
method
stub
m
=
new
Mail("empty.shen@",
"*****");
String[]
toArr
=
{"silangquan@","k283228391@126.com"};
m.setTo(toArr);
m.setFrom("wooo@");
m.setSubject("JavamailTest");
m.setBody("Email
body.");
try
{
//If
you
want
add
attachment
use
function
addAttachment.
//m.addAttachment("/sdcard/filelocation");
if(m.send())
{
System.out.println("Email
was
sent
successfully.");
}
else
{
System.out.println("Email
was
not
sent.");
}
}
catch(Exception
e)
{
//Toast.makeText(MailApp.this,
"There
was
a
problem
sending
the
email.",
Toast.LENGTH_LONG).show();
Log.e("MailApp",
"Could
not
send
email",
e);
}
return
"";
}
@Override
protected
void
onProgressUpdate(Integer...
progress)
{
//这个函数在doInBackground调用publishProgress时触发,虽然调用时只有一个参数
//但是这里取到的是一个数组,所以要用progesss[0]来取值
//第n个参数就用progress[n]来取值
super.onProgressUpdate(progress);
}
@Override
protected
void
onPostExecute(String
r)
{
//doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
//这里的result就是上面doInBackground执行后的返回值,所以这里是"执行完毕"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新高考理综试题及答案
- 幼儿园数学考试创造性思维试题及答案
- 材料科学背景下的大学物理考试试题及答案
- 建筑施工安全考试练习题目分析
- 教师教育实施反思与改进试题及答案
- 食品与饮料行业食品安全监管信息化建设报告
- 智能网联与新能源的协同发展路径研究试题及答案
- 茂名邮政笔试试题及答案
- 电大形考试试题及答案
- 江西幼师笔试题目及答案
- 《装备质量问题归零实施指南》
- 人卫版肺部疾病教学课件
- 面肌痉挛的健康宣教
- 超滤反渗透调试方案
- 外籍人员个人所得税讲义课件
- LED制程与工艺介绍
- 《马克思主义中国化思想通史》导读-南京林业大学中国大学mooc课后章节答案期末考试题库2023年
- 北京中考语文词语表
- 水资源利用智慧树知到答案章节测试2023年西安理工大学
- 水质对干豆腐品质的影响机制及调控技术
- LY/T 2676-2016半干旱地区灌木林平茬与复壮技术规范
评论
0/150
提交评论