Android系统使用JAVA MAIL发送非gmail邮件(未验证)
2013-12-02 11:28
543 查看
http://download.csdn.net/download/leoly003/4092287
package org.leoly; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import android.util.Log; public class MailSender { private final String Tag = "SMailSender"; private String mSmtp_host; private String mFrom_userName; private String mFrom_passWord; private String mShow_name = "Jiahe"; private MimeMessage mMimeMsg; // Òª·¢Ë͵ÄemailÐÅÏ¢ private Session mSession; private Multipart mp; // Žæ·ÅÓÊŒþµÄtitle ÄÚÈݺ͞œŒþ private String mSubject; private String mContent; private String mToId = null; private String mCcId = null; private String mBccId = null; private String mFilePath = null; private final int NONE = 0; private final int CONNECTING = 1; private final int CONNECTED = 2; private final int SENDING = 3; private final int SENDED = 4; private int mState; public enum MailType { TYPE_GMAIL, TYPE_126, TYPE_163, TYPE_QQ; } private MailType mailType; // private Properties props; /** * ¹¹Ô캯Êý * @param hostName */ public MailSender() { // mSmtp_host = "smtp.gmail.com"; mp = new MimeMultipart(); } public MailSender(String hostName) { // mSmtp_host = hostName; mp = new MimeMultipart(); } /** * ÉèÖ÷¢ŒþÈ˵ÄÓû§ÃûºÍÃÜÂë Ä¿Ç°Ö»Ö§³Ögmail¡¢126¡¢163ÓÊÏä * @param _userName * @param _password */ public boolean setAuthor(String _userName, String _password) { mFrom_userName = _userName; mFrom_passWord = _password; return setHost(mFrom_userName); // ÉèÖÃÓÊÏäÀàÐÍ } /** * ÉèÖÃÓÊŒþÖ÷Ìâ * @param subject */ public void setSubject(String subject) { if (subject != null) mSubject = subject; } /** * ÉèÖÃÓÊŒþÄÚÈÝ * @param content */ public void setContent(String content) { if (content != null) mContent = content; } /** * ÉèÖÃÊÕŒþÈË£¬ÊÕŒþÈËÖ®ŒäÓÃ";"žô¿ª * @param to * @return */ public void setTo(String toId) { mToId = toId; } /** * ÉèÖÃÓÊŒþ³ËÍÈË£¬³ËÍÈËÖ®ŒäÓÃ";"žô¿ª * @param copyto * @return */ public void setCc(String ccId) { mCcId = ccId; } /** * ÉèÖðµ³ËÍÈË£¬°µ³ËÍÈËÖ®ŒäÓÃ";"žô¿ª * @param bcopyto * @return */ public void setBcc(String bccId) { mBccId = bccId; } public void setShowName(String name) { mShow_name = name; } /** * ÉèÖÞœŒþ·Ÿ¶£¬Â·Ÿ¶Ö®ŒäÓÃ";"žô¿ª * @param path */ public void addFileAffix(String path) { mFilePath = path; } public int getMailState() { return mState; } private boolean setSendToMsg(String to) { if (to.equals("") || to == null) { return false; } try { String sendto[]; sendto = to.split(";"); for (int i = 0; i < sendto.length; i++) { mMimeMsg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(sendto[i])); } return true; } catch (Exception e) { return false; } } private boolean setCopyToMsg(String copyto) { if (copyto.equals("") || copyto == null) { return false; } try { String copy[]; copy = copyto.split(";"); for (int i = 0; i < copy.length; i++) { mMimeMsg.addRecipients(Message.RecipientType.CC, InternetAddress.parse(copy[i])); } return true; } catch (Exception e) { return false; } } private boolean setBCopyToMsg(String bcopyto) { if (bcopyto.equals("") || bcopyto == null) { return false; } try { String bcopy[]; bcopy = bcopyto.split(";"); for (int i = 0; i < bcopy.length; i++) { mMimeMsg.addRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcopy[i])); } return true; } catch (Exception e) { return true; } } private boolean setContentMp(String conMp) { try { BodyPart bp = new MimeBodyPart(); bp.setContent("<meta http-equiv=Context-Type context=text/html;charset=gb2312>" + conMp, "text/html;charset=GB2312"); mp.addBodyPart(bp); return true; } catch (Exception e) { System.out.println("Set context Faild! " + e); return false; } } private boolean addFile(String filePath) { // System.out.println("add affix.."); if (filePath.equals("") || filePath == null) { return false; } String file[]; file = filePath.split(";"); // System.out.println("you have " + file.length + " affix!"); try { for (int i = 0; i < file.length; i++) { BodyPart bp = new MimeBodyPart(); FileDataSource fileds = new FileDataSource(file[i]); bp.setDataHandler(new DataHandler(fileds)); bp.setFileName(fileds.getName()); mp.addBodyPart(bp); } return true; } catch (Exception e) { Log.d(Tag, "add affix: " + filePath + "--faild!" + e); System.err.println("add affix: " + filePath + "--faild!" + e); return false; } } private boolean setHost(String mailAddress) { if (mailAddress.contains("@gmail.")) { mSmtp_host = "smtp.gmail.com"; mailType = MailType.TYPE_GMAIL; return true; } if (mailAddress.contains("@126.")) { mSmtp_host = "pop.126.com"; mailType = MailType.TYPE_126; return true; } if (mailAddress.contains("@163.")) { mSmtp_host = "pop.163.com"; mailType = MailType.TYPE_163; return true; } else return false; /* * if(mailAddress.contains("@qq.")){ mSmtp_host = * "smtp.qq.com"; mailType = MailType.TYPE_QQ; } */ } public void sendMail() { try { mState = NONE; Properties props = System.getProperties(); props = System.getProperties(); // Èç¹ûΪgmailÓÊÏ䣬ÐèÒªÉèÖÃÏÂÁœÏî if (mailType == MailType.TYPE_GMAIL) { props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.port", "587"); } props.put("mail.smtp.host", mSmtp_host); props.put("mail.smtp.user", mFrom_userName); props.put("mail.smtp.password", mFrom_passWord); props.put("mail.smtp.auth", "true"); mSession = Session.getDefaultInstance(props, null); mSession.setDebug(false); mMimeMsg = new MimeMessage(mSession); mMimeMsg.setFrom(new InternetAddress(mFrom_userName)); // mMimeMsg.setContent(mContent, // "text/html;charset=utf-8"); if (mToId != null) setSendToMsg(mToId); if (mCcId != null) setCopyToMsg(mCcId); if (mBccId != null) setBCopyToMsg(mBccId); if (mSubject != null) { mMimeMsg.setSubject(mSubject); } if (mShow_name != null) { mMimeMsg.setFrom(new InternetAddress(mShow_name + "<" + mFrom_userName + ">")); } if (mContent != null) { setContentMp(mContent); mMimeMsg.setContent(mp); } if (mFilePath != null) { addFile(mFilePath); } System.out.println(mMimeMsg.getAllRecipients().toString()); Transport transport = mSession.getTransport("smtp"); System.out.println("connecting..."); mState = CONNECTING; transport.connect(mSmtp_host, mFrom_userName, mFrom_passWord); mState = CONNECTED; Log.i(Tag, "Connected to " + mFrom_userName + " succuss"); System.out.println("sending..."); mState = SENDING; transport.sendMessage(mMimeMsg, mMimeMsg.getAllRecipients()); mState = SENDED; transport.close(); Log.i(Tag, "Send a mail to " + mToId); System.out.println("send an email to " + mToId + " success"); } catch (Exception e) { System.out.println("failure! "); Log.d(Tag, " failure! ", e); e.printStackTrace(); } } public void receiveMail() throws Exception { Properties props = new Properties(); Session session = Session.getInstance(props); Store store = session.getStore("pop3"); store.connect(mSmtp_host, mFrom_userName, mFrom_passWord); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message[] msgs = folder.getMessages(); for (Message msg : msgs) { System.out.println(msg.getSubject()); } store.close(); } }
相关文章推荐
- android webkit CSS3及Render初窥
- Android USB Host的使用详解
- Android之Service与IntentService的比较
- 支持 root 权限和 ART 模式的 Android 4.4 模拟器镜像 (ARM & X86)
- Android.mk文件语法规范及使用模板
- android之访问被保护的资源
- Android应用崩溃后异常捕获并重启
- Android 之ADB server didn't ACK问题的解决办法
- Android Selector 与 Shape 基本用法
- Android中的Bmp图形格式(ALPHA_8,ARGB_4444,ARGB_8888,RGB_565)
- 直接拿来用!最火的Android开源项目(完结篇)
- android客户端访问后台服务器时常用的一些检查方法
- Android中的USB中的UsbAccessory和UsbDevice的区别
- 直接拿来用!最火的Android开源项目(二)
- Android中使用Gson解析JSON数据
- Android ListView item 不触发onItemSelectChanged的解决方法
- Pattern.compile
- 直接拿来用!最火的Android开源项目(一)
- android/mydroid/system/core/logcat/logcat.cpp
- Android编译系统makefile(Android.mk) 写法