您的位置:首页 > 移动开发 > Android开发

Android开发&send email

2015-11-05 21:42 387 查看
Android接收和发送邮件是通过邮局协议(pop3)和简单邮件传输协议(smtp)实现的。

简单的说:发送邮件时是先将邮件附加内容,发送地址,接收地址信息发送到指定的邮箱服务器(smtp服务器),然后smtp服务器会根据指定的接收地址寻求接收端smtp服务器,最后通过pop3协议从smtp服务器上获取邮件。





~~~图片来源百度

1.通过安卓内置的Gmail程序来发送邮件。

Intent intent=new Intent(Intent.ACTION_SEND);
//隐式调用Intent:“android.intent.action.SEND";
//“android.intent.action.SEND_TO"表示发送无附件的邮件。
//“android.intent.action.SEND_MULTIPLE"表示发送复杂大量附件的邮件
intent.setType("application/stream");
//设置邮件属性,系统会自动根据上传的内容进行推导,可以不设置。
intent.putExtra(Intent.EXTRA_EMAIL,emailReceiver.getText().toString());
//设置收件人
intent.putExtra(Intent.EXTRA_SUBJECT,subject.getText().toString());
//设置邮件主题
intent.putExtra(Intent.EXTRA_TEXT,emailText.getText().toString());
//设置邮件内容
intent.putExtra(Intent.EXTRA_BCC,emailSend.getText().toString());
//设置密送人(对方看不到密送人)
intent.putExtra(Intent.EXTRA_CC,emailSend.getText().toString());
//设置抄送人
email.putExtra(Intent.EXTRA_STREAM, uri);
//添加附件,uri表示具体文件uri。
startActivity(Intent.createChooser(intent, "choose the application"));
//createChooser相当于设定选择应用程序的标题,因为这个功能需要借助其他的应用实现。


2. 引入mail等包,不通过Gmail直接发送邮件。

new Thread(new Runnable() {
@Override
public void run() {
try {
HtmlEmail htmlEmail=new HtmlEmail();
htmlEmail.setHostName("smtp.139.com");
//设置使用的smtp服务器
htmlEmail.setTLS(true);
htmlEmail.setSSL(true);
//允许TLS(安全套接层)和SSl(传输层安全)协议
htmlEmail.setCharset("gbk");
//设置邮件编码方式
MimeMultipart multipart=new MimeMultipart();
MimeBodyPart bodyPart=new MimeBodyPart();
String file="文件路径";
if(!TextUtils.isEmpty(file)){
try {
bodyPart.attachFile(file);
multipart.addBodyPart(bodyPart);
htmlEmail.addPart(multipart);
} catch (IOException e) {
;//处理文件路径错误。
}
}
htmlEmail.setSubject(subject);
htmlEmail.addTo(emailReceiver);
htmlEmail.setFrom("发送人邮箱");
htmlEmail.setAuthentication("XXX@139.com", "XXX");
//连接发送端服务器,第一个参数是邮箱地址,第二个为邮箱密码
htmlEmail.setMsg("邮件内容XXX");
htmlEmail.send();
Message m=new Message();
m.what=2;
handler.sendMessage(m);
} catch (Exception e) {
Message m=new Message();
m.what=1;
m.obj=e.toString();
handler.sendMessage(m);
//把message交给主线程操作。
}
}
}).start();
//发送邮件最好开启新线程,避免线程阻塞
//本实例只供参考,代码并不能直接运行


qq邮箱服务器经常出问题,不建议使用;

emai等包可百度下载

Email包 点击下载

Intent.type属性与MIME类型 对照表

链接与图片均为他人作品,转载请说明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: