android 添加附件功能,Android实现带附件的邮件发送功能
本文实例讲解了基于基于jmail实现android邮件发送功能,分享给大家供大家参考,具体内容如下在android上发送邮件方式:第一种:借助gmail app客户端,缺点是必须使用gmail帐号,有一点是比较方便,不需要写很多代码,但是不是很灵活。第二种:基于jmail实现,可以很灵活的自己设置各种属性,不需要gmail帐号在第二种方式的实现之前,看一下jmail对email结构的划分:基于sm
本文实例讲解了基于基于jmail实现android邮件发送功能,分享给大家供大家参考,具体内容如下
在android上发送邮件方式:
第一种:借助gmail app客户端,缺点是必须使用gmail帐号,有一点是比较方便,不需要写很多代码,但是不是很灵活。
第二种:基于jmail实现,可以很灵活的自己设置各种属性,不需要gmail帐号
在第二种方式的实现之前,看一下jmail对email结构的划分:
基于smtp协议发送email,所以客户端必须要知道smtp的主机。
腾讯邮件的smtp主机为:stmp.qq.com端口为465基于ssl协议。
最后我做了一个简单的封装,把发送文本加图像附件的功能做出了。
一个单独的class,只要调用一下即可完成:
package com.gloomyfish.jmail.demo;
import java.util.date;
import java.util.properties;
import javax.activation.datahandler;
import javax.activation.datasource;
import javax.activation.filedatasource;
import javax.mail.address;
import javax.mail.message;
import javax.mail.multipart;
import javax.mail.session;
import javax.mail.transport;
import javax.mail.internet.internetaddress;
import javax.mail.internet.mimebodypart;
import javax.mail.internet.mimemessage;
import javax.mail.internet.mimemultipart;
public class emailsender {
private string host;
private string port;
private string username;
private string password;
private string[] images;
public string[] getimagepath() {
return images;
}
public void setimagepath(string[] imagepath) {
this.images = imagepath;
}
public emailsender(string host, string port, string username, string password)
{
this.host = host;
this.port = port;
this.username = username;
this.password = password;
}
public void sendemail(string subject, string recepits, string sender, string content)
{
properties props = new properties();
props.put("mail.smtp.host", host); //设置smtp的服务器地址
// props.put("mail.smtp.starttls.enable", "true");
// props.put("mail.smtp.port", port); // 设置端口
// props.put("mail.smtp.auth", "true"); //设置smtp服务器要身份验证。
props.put("mail.smtp.socketfactory.port", port);
props.put("mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", port);
// 返回授权base64编码
popupauthenticator auth = new popupauthenticator(username, password);
// 获取会话对象
session session = session.getinstance(props, auth);
// 设置为debug模式
session.setdebug(true);
// 邮件内容对象组装
mimemessage message = new mimemessage(session);
try
{
address addressfrom = new internetaddress(sender, "jia zhi gang");
address addressto = new internetaddress(recepits, "my qq e-mail");
message.setsubject(subject);
message.setsentdate(new date());
message.setfrom(addressfrom);
message.addrecipient(message.recipienttype.to,addressto);
// 邮件文本/html内容
multipart multipart = new mimemultipart();
mimebodypart messagebodypart = new mimebodypart();
messagebodypart.setcontent(content, "text/html");
multipart.addbodypart(messagebodypart);
// 添加邮件附件
if (images != null && images.length > 0) {
for (string filepath : images) {
mimebodypart attachpart = new mimebodypart();
datasource source = new filedatasource(filepath);
attachpart.setdatahandler(new datahandler(source));
attachpart.setfilename(filepath);
multipart.addbodypart(attachpart);
}
}
// 保存邮件内容
message.setcontent(multipart);
// 获取smtp协议客户端对象,连接到指定smpt服务器
transport transport = session.gettransport("smtp");
transport.connect(host, integer.parseint(port), username, password);
system.out.println("connet it success!!!!");
// 发送邮件到smtp服务器
thread.currentthread().setcontextclassloader( getclass().getclassloader() );
transport.send(message);
system.out.println("send it success!!!!");
// 关闭连接
transport.close();
}
catch(exception e)
{
e.printstacktrace();
}
}
public string gethost() {
return host;
}
public void sethost(string host) {
this.host = host;
}
public string getport() {
return port;
}
public void setport(string port) {
this.port = port;
}
public string getusername() {
return username;
}
public void setusername(string username) {
this.username = username;
}
public string getpassword() {
return password;
}
public void setpassword(string password) {
this.password = password;
}
}
用户授权类:
package com.gloomyfish.jmail.demo;
import javax.mail.authenticator;
import javax.mail.passwordauthentication;
class popupauthenticator extends authenticator {
private string username;
private string password;
public popupauthenticator(string username, string password)
{
this.username = username;
this.password = password;
}
public passwordauthentication getpasswordauthentication() {
return new passwordauthentication(username, password);
}
}
特别注意:
在android上发送邮件必须自己导入三个相关的java文件
以上就是本文的全部内容,希望对大家的学习android软件编程有所帮助。
更多推荐
所有评论(0)