发送邮件不经过自带邮箱
首先下载
http://code.google.com/p/javamail-android/downloads/list
?
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?javax.mail.internet.InternetAddress;?import?javax.mail.internet.MimeBodyPart;?import?javax.mail.internet.MimeMessage;?import?javax.mail.internet.MimeMultipart;???public?class?Mail?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?=?"smtp.gmail.com";?//?default?smtp?server?????_port?=?"465";?//?default?smtp?port?????_sport?=?"465";?//?default?socketfactory?port??????_user?=?"";?//?username?????_pass?=?"";?//?password?????_from?=?"";?//?email?sent?from?????_subject?=?"";?//?email?subject?????_body?=?"";?//?email?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?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?email???????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",?"javax.net.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?…..?}?
And now I'm going to go through each bit of code
public?Mail()?{???_host?=?"smtp.gmail.com";?//?default?smtp?server???_port?=?"465";?//?default?smtp?port???_sport?=?"465";?//?default?socketfactory?port????_user?=?"";?//?username???_pass?=?"";?//?password???_from?=?"";?//?email?sent?from???_subject?=?"";?//?email?subject???_body?=?"";?//?email?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?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?email?
????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);?
}?
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",?"javax.net.ssl.SSLSocketFactory");?
??props.put("mail.smtp.socketFactory.fallback",?"false");?
?
??return?props;?
}?
?
@Override?
public?void?onCreate(Bundle?icicle)?{?
??super.onCreate(icicle);?
??setContentView(R.layout.main);?
?
??Button?addImage?=?(Button)?findViewById(R.id.send_email);?
??addImage.setOnClickListener(new?View.OnClickListener()?{?
????public?void?onClick(View?view)?{?
??????Mail?m?=?new?Mail("gmailusername@gmail.com",?"password");?
?
??????String[]?toArr?=?{"bla@bla.com",?"lala@lala.com"};?
??????m.setTo(toArr);?
??????m.setFrom("wooo@wooo.com");?
??????m.setSubject("This?is?an?email?sent?using?my?Mail?JavaMail?wrapper?from?an?Android?device.");?
??????m.setBody("Email?body.");?
?
??????try?{?
????????m.addAttachment("/sdcard/filelocation");?
?
????????if(m.send())?{?
??????????Toast.makeText(MailApp.this,?"Email?was?sent?successfully.",?Toast.LENGTH_LONG).show();?
????????}?else?{?
??????????Toast.makeText(MailApp.this,?"Email?was?not?sent.",?Toast.LENGTH_LONG).show();?
????????}?
??????}?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);?
??????}?
????}?
??});?
}?