`

android邮件发送几种方式

 
阅读更多



 android中发送邮件我大概发现了3种,代码如下

package src.icetest;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class IcetestActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Log.i("IcetestActivity", "start ice test step 1");
		// sendMailIntent();
		//sendMailByApache();
		sendMailByJavaMail();
	}

	// you need config the mail app in your android moble first,and the mail will send by the mail app. and there are one big bug:
	//you can't send the mail Silently and you need to click the send button
	public int sendMailByIntent() {
		String[] reciver = new String[] { "181712000@qq.com" };
		String[] mySbuject = new String[] { "test" };
		String myCc = "cc";
		String mybody = "测试Email Intent";
		Intent myIntent = new Intent(android.content.Intent.ACTION_SEND);
		myIntent.setType("plain/text");
		myIntent.putExtra(android.content.Intent.EXTRA_EMAIL, reciver);
		myIntent.putExtra(android.content.Intent.EXTRA_CC, myCc);
		myIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, mySbuject);
		myIntent.putExtra(android.content.Intent.EXTRA_TEXT, mybody);
		startActivity(Intent.createChooser(myIntent, "mail test"));

		return 1;

	}
   /*this method can't be used in android mobile successful,but it can run normally in PC.
	Because it will cause the java.lang.NoClassDefFoundError: javax.activation.DataHandler error
	May be there are some way to solove it ......there are always javax package not found in android virtual mobile.
	By the way ,the method use Apache mail jar   	
	*/
	public int sendMailByApache() {

		try {
			HtmlEmail email = new HtmlEmail();
			// 这里是发送服务器的名字
			email.setHostName("smtp.gmail.com");
			// 编码集的设置
			email.setTLS(true);
			email.setSSL(true);

			email.setCharset("gbk");
			// 收件人的邮箱
			email.addTo("181712000@qq.com");
			// 发送人的邮箱
			email.setFrom("wcf0000@gmail.com");
			// 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
			email.setAuthentication("wcf1000", "00000");
			email.setSubject("测试Email Apache");
			// 要发送的信息
			email.setMsg("测试Email Apache");
			// 发送
			email.send();
		} catch (EmailException e) {
			// TODO Auto-generated catch block
			Log.i("IcetestActivity", e.getMessage());
		}

		return 1;
	}
/*
 * this method use javamail for android ,it is a good jar,
 * you can see the demo in http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_(no_Intents)_in_Android
 * and you also need three jars ,which I offered in attachement
 * 
 * */
	public int sendMailByJavaMail() {
		Mail m = new Mail("wcfXXXX@gmail.com", "XXXXX");
		m.set_debuggable(true);
		String[] toArr = {"18170000@qq.com"}; 
		m.set_to(toArr);
		m.set_from("18170000@qq.com");
		m.set_subject("This is an email sent using icetest from an Android device");
		m.setBody("Email body. test by Java Mail");
		try {
			//m.addAttachment("/sdcard/filelocation"); 
			if(m.send()) { 
			Log.i("IcetestActivity","Email was sent successfully.");
						
			} else {
				Log.i("IcetestActivity","Email was sent failed.");
			}
		} 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);
		}

		return 1;
	}
}

 

第一种方法是调用了系统的mail app,你首先要配置系统的mail app,但是这个方法的最大问题是,你运行这个方法后

他并不会默认的发送邮件,而是弹出mail的app界面,你需要手动的点击发送,如图

 

 

第二种,是调用了apache的common库,在pc上可以正常运行,但是在android虚拟机中会报错java.lang.NoClassDefFoundError: javax.activation.DataHandler error

javax包无法找到,我看了下这个问题还是比较普遍的,大家普遍表示虚拟机是被阉割的版本,javax好像存在不全,这个实际上就无法运行

 

第三种,实际是javamail有人做了移植,专门为android做了开发,这下就比较好了,网上的demo代码也比较到位,只有一个问题,就是要自己添加一个mail.java,而且对stmp要手动添加。

 

其实理论上还应该有一种,自己实现smtp服务器,全程采用socket编程,直接与目标服务器交流,这个win下面我写过,但是android下就算了,而且长期来讲面临着smtp服务器以后会被进行方向查询,以提高安全性。

 

 

  • 大小: 36.3 KB
分享到:
评论
12 楼 www.sendmaillist.com 2014-07-06  
向搂主学习,需要好好学学安卓,把我的邮件软件业迁移过去。
11 楼 csf928437197 2014-03-20  
qi19901212 写道
三楼的神武  厉害。第三种我运行出现java.lang.NoClassDefFoundError: javax.activation.DataHandler error 不知道怎么回事。郁闷中
这个问题解决没呀,我也遇到这个问题,找不到解决办法
10 楼 youyoufufu 2013-10-29  
1楼错误,原因在于工程属性里,要“order and export”里 勾选 那三个引用jar。
9 楼 qi19901212 2013-08-06  
三楼的神武  厉害。第三种我运行出现java.lang.NoClassDefFoundError: javax.activation.DataHandler error 不知道怎么回事。郁闷中
8 楼 limb99 2013-07-13  
看到第二种方法的jar包这么大,直接放弃了
7 楼 qyqingyan 2013-06-24  
第三种,实际是javamail有人做了移植,专门为android做了开发,这下就比较好了,网上的demo代码也比较到位,只有一个问题,就是要自己添加一个mail.java,而且对stmp要手动添加。


自己添加一个mail.jar,而且对stmp要手动添加。请教一下,怎么添加啊?
6 楼 fangengbiao 2013-06-14  
monkey1223 写道
这个程序我运行老是显示
Could not find class 'src.icetest.Mail', referenced from method src.icetest.
我将public class Mail放在 Activity 里还是不行啊,明明就在,为什么显示找不到呢??忙活了一个下午了,能指导一下吗??

  我也是一样,不知道哪里出问题了
5 楼 飞鸿搏击 2013-06-10  
下来看看,谢谢
4 楼 evader 2013-05-17  
个人还是觉得第二种方法比较好,还有文档,很容易用。单纯用commons-email.jar确实会出问题,但是放入第三种方法需要放入的文件就没问题了。
jar包下载的相关页面
http://commons.apache.org/proper/commons-email/
https://code.google.com/p/javamail-android/
感谢第3楼的提示
3 楼 jingyening 2012-10-29  
楼主,你的apache包发送email有问题的原因是除了commons-email.jar外,另外的两个jar包不对,用javaemail-android文件夹下的那俩jar包,同时把additionnal.jar也导入,就可以了。虚拟机也ok。
2 楼 jingyening 2012-10-29  
问一下楼主,第二种应该真机上也不能运行吗??还有为什么apche的mail.jar和java文件夹的mail.jar 不一样呢??当然,另外一个名字形同的jar包结构也不一样。希望楼主能给指点一下。。我知道如果java文件夹下的additionnal.jar如果没有的话,编译通过,但是会有ClassDefNotFound异常,但是放到apache中没用,难道还有另一个additionnal.jar??
1 楼 monkey1223 2012-05-04  
这个程序我运行老是显示
Could not find class 'src.icetest.Mail', referenced from method src.icetest.
我将public class Mail放在 Activity 里还是不行啊,明明就在,为什么显示找不到呢??忙活了一个下午了,能指导一下吗??

相关推荐

    Android发送邮件demo

    在Android平台上,发送邮件功能是常见的需求,无论是用于用户反馈、分享内容...在`SendEmailDemo`中,开发者已经为我们提供了实现这一功能的参考代码,通过学习和理解,我们可以更好地在自己的应用中实现邮件发送功能。

    android邮件三件套:mail.jar

    总的来说,"android邮件三件套:mail.jar"为Android开发者提供了一种方便的方式来集成邮件发送功能,但实际使用时还需要根据具体需求进行适当的配置和定制。理解这三个库的工作原理和使用方式,对于开发具有邮件功能...

    Android发邮件源码:IMAPMail.zip

    在Android平台上实现邮件发送功能,通常会涉及到网络通信和邮件协议。这个名为"IMAPMail.zip"的压缩包提供了一段源代码,用于帮助开发者在Android应用中集成发送邮件的功能,特别是利用IMAP协议。IMAP(Internet ...

    Android-AndroidApp崩溃日志上传框架

    总之,"Android-AndroidApp崩溃日志上传框架"为开发者提供了一种高效且便捷的方式来收集和报告应用的崩溃信息,帮助他们更快地定位和解决问题,提高应用的质量和用户满意度。通过熟练掌握这类框架,开发者可以更专注...

    Android Intent的几种用法全面总结

    以下是Android Intent的几种常见用法的详细解释: 1. 显示网页: 当你想在设备上打开一个网页时,可以通过ACTION_VIEW Intent与系统浏览器交互。例如: ```java Uri uri = Uri.parse("http://www.google.com"); ...

    Android 后台发送邮件到指定邮箱

    Android 后台发送邮件到指定邮箱是指在 Android 应用程序中使用 JavaMail 库将邮件发送到指定的邮箱中。这种技术广泛应用于错误日志上传、客户反馈信息发送、自动化测试报告发送等场景。 在 Android 中发送邮件需要...

    Android实现带附件的邮件发送功能

    在Android平台上,实现带附件的邮件发送功能是一个常见的需求,特别是在开发企业级应用时。本文将详细介绍如何使用JMail库来实现这一功能。首先,我们要理解Android中发送邮件的两种基本方法: 1. **借助GMail APP...

    完整邮件客户端

    2. UI设计:使用Android的Material Design组件和布局,构建用户友好的界面,如收件箱、草稿箱、已发送邮件等视图。 3. 异步操作:考虑到邮件收发可能涉及大量的网络通信,应使用AsyncTask或其他异步处理机制,防止...

    Android中使用Service实现后台发送邮件功能实例

    总结起来,Android中使用Service实现后台发送邮件功能,需要结合IntentService或自定义Service来处理邮件发送逻辑,同时可能需要BroadcastReceiver来监听特定事件(如收到短信)来触发邮件发送。在实际开发中,还要...

    android email jar

    为了在Android应用中实现邮件发送,我们需要引入一些额外的库,这些库通常包含在三个特定的JAR(Java Archive)文件中:activation.jar、additionnal.jar和mail.jar。下面将详细介绍这三个JAR文件以及它们在邮件发送...

    youjian.rar_android

    在Android开发中,发送邮件一般有两种方式:一是通过集成第三方库,如JavaMail API或Android KTX库;二是利用内置的Intent系统,通过Intent来启动系统的邮件应用完成发送。从标签"android"来看,这里很可能是第二种...

    弹出单选框示例(android)

    // 处理邮件发送逻辑 break; case R.id.radio_clipboard: // 处理复制到剪贴板逻辑 break; } } }); ``` 三、创建弹出对话框 要将这个布局作为弹出对话框展示,我们需要使用AlertDialog.Builder。以下是如何...

    Opencv android SDK 和Opencv Android Studio Demo 百度网盘下载地址

    该 Demo 包括以下几种功能: 1. **人脸美化:** - 实现了对人脸进行美化的功能,比如磨皮、美白等效果。 - 通过识别脸部关键点进行精准处理,提升用户体验。 2. **身份证号码识别:** - 通过对图像进行处理和...

    Android实现几种推送方式解决方案

    本文将深入探讨几种在Android中实现推送方式的解决方案,以及它们各自的优缺点。 首先,我们需要理解推送方式的基础知识。在移动互联网之前,手机通常依赖窗口弹出式通知来提醒用户新事件。随着技术的发展,推送...

    android推送解决方案

    2. 几种常见的解决方案实现原理 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢...

    安卓Android源码——Email.rar

    本篇将深入探讨Android源码中的Email模块,揭示其背后的设计思想和技术实现,旨在帮助开发者更深入地理解Android邮件服务的运行机制。 一、Email框架概述 Android的Email组件是系统中用于处理电子邮件的核心服务,...

    android 数据业务流程分析

    Android系统支持多种类型的网络连接,其中手机数据和WiFi是最常用的两种方式。这两者之间的关系较为复杂,主要包括以下方面: - **优先级比较**:在Android系统中,WiFi的优先级高于移动数据。这意味着当两者同时...

Global site tag (gtag.js) - Google Analytics