Android系统使用JAVA MAIL发送非gmail邮件(未验证)

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();
	}
}


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值