android javax.mail发送中文邮件

废话少说,直接入主题!

结构如图:

android javax.mail发送中文邮件

Mail.java代码:

public class Mail extends javax.mail.Authenticator {

	private String _user;

	private String _pass;

	private String[] _to;

	private String _from;

	public String[] get_to() {

		return _to;

	}

	public void set_to(String[] _to) {

		this._to = _to;

	}

	public String get_from() {

		return _from;

	}

	public void set_from(String _from) {

		this._from = _from;

	}

	public String get_subject() {

		return _subject;

	}

	public void set_subject(String _subject) {

		this._subject = _subject;

	}

	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(MimeUtility.encodeText(_subject, "GB2312", "B"));

			msg.setSentDate(new Date());

			// setup message body

			BodyPart messageBodyPart = new MimeBodyPart();

			messageBodyPart.setContent(_body, "text/html;charset=gb2312");

			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(MimeUtility.encodeText(_subject, "GB2312", "B")); 

		_multipart.addBodyPart(messageBodyPart);

	}



	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;

	}

}

Send_Gmail_EmailActivity.java代码:

public class Send_Gmail_EmailActivity extends Activity {

	/** Called when the activity is first created. */

	@Override

	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		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("[email protected]", "ilyjwc520");

				String[] toArr = {"[email protected]"};

				m.set_to(toArr);

				m.set_from("jason_jo");

				m.set_subject("邮件测试");

				m.setBody("是否支持中文");

				try {

					m.addAttachment("/sdcard/999.jpg");

					if (m.send()) {

						Toast.makeText(Send_Gmail_EmailActivity.this,

								"Email was sent successfully.",

								Toast.LENGTH_LONG).show();

					} else {

						Toast.makeText(Send_Gmail_EmailActivity.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);

				}

			}

		});

	}



}

main.xml代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

	android:orientation="vertical" android:layout_width="fill_parent"

	android:layout_height="fill_parent">

	<TextView android:layout_width="fill_parent"

		android:layout_height="wrap_content" android:text="@string/hello" />

	<Button android:text="Button" android:id="@+id/send_email"

		android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

</LinearLayout>

androidmanifest.xml代码:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="Send_Gmail_Email.Jason"

      android:versionCode="1"

      android:versionName="1.0">

    <uses-sdk android:minSdkVersion="4" />

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".Send_Gmail_EmailActivity"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

</manifest>

你可能感兴趣的:(android)