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
分享到:
相关推荐
在Android平台上,发送邮件功能是常见的需求,无论是用于用户反馈、分享内容...在`SendEmailDemo`中,开发者已经为我们提供了实现这一功能的参考代码,通过学习和理解,我们可以更好地在自己的应用中实现邮件发送功能。
总的来说,"android邮件三件套:mail.jar"为Android开发者提供了一种方便的方式来集成邮件发送功能,但实际使用时还需要根据具体需求进行适当的配置和定制。理解这三个库的工作原理和使用方式,对于开发具有邮件功能...
在Android平台上实现邮件发送功能,通常会涉及到网络通信和邮件协议。这个名为"IMAPMail.zip"的压缩包提供了一段源代码,用于帮助开发者在Android应用中集成发送邮件的功能,特别是利用IMAP协议。IMAP(Internet ...
总之,"Android-AndroidApp崩溃日志上传框架"为开发者提供了一种高效且便捷的方式来收集和报告应用的崩溃信息,帮助他们更快地定位和解决问题,提高应用的质量和用户满意度。通过熟练掌握这类框架,开发者可以更专注...
以下是Android Intent的几种常见用法的详细解释: 1. 显示网页: 当你想在设备上打开一个网页时,可以通过ACTION_VIEW Intent与系统浏览器交互。例如: ```java Uri uri = Uri.parse("http://www.google.com"); ...
Android 后台发送邮件到指定邮箱是指在 Android 应用程序中使用 JavaMail 库将邮件发送到指定的邮箱中。这种技术广泛应用于错误日志上传、客户反馈信息发送、自动化测试报告发送等场景。 在 Android 中发送邮件需要...
在Android平台上,实现带附件的邮件发送功能是一个常见的需求,特别是在开发企业级应用时。本文将详细介绍如何使用JMail库来实现这一功能。首先,我们要理解Android中发送邮件的两种基本方法: 1. **借助GMail APP...
2. UI设计:使用Android的Material Design组件和布局,构建用户友好的界面,如收件箱、草稿箱、已发送邮件等视图。 3. 异步操作:考虑到邮件收发可能涉及大量的网络通信,应使用AsyncTask或其他异步处理机制,防止...
总结起来,Android中使用Service实现后台发送邮件功能,需要结合IntentService或自定义Service来处理邮件发送逻辑,同时可能需要BroadcastReceiver来监听特定事件(如收到短信)来触发邮件发送。在实际开发中,还要...
为了在Android应用中实现邮件发送,我们需要引入一些额外的库,这些库通常包含在三个特定的JAR(Java Archive)文件中:activation.jar、additionnal.jar和mail.jar。下面将详细介绍这三个JAR文件以及它们在邮件发送...
在Android开发中,发送邮件一般有两种方式:一是通过集成第三方库,如JavaMail API或Android KTX库;二是利用内置的Intent系统,通过Intent来启动系统的邮件应用完成发送。从标签"android"来看,这里很可能是第二种...
// 处理邮件发送逻辑 break; case R.id.radio_clipboard: // 处理复制到剪贴板逻辑 break; } } }); ``` 三、创建弹出对话框 要将这个布局作为弹出对话框展示,我们需要使用AlertDialog.Builder。以下是如何...
该 Demo 包括以下几种功能: 1. **人脸美化:** - 实现了对人脸进行美化的功能,比如磨皮、美白等效果。 - 通过识别脸部关键点进行精准处理,提升用户体验。 2. **身份证号码识别:** - 通过对图像进行处理和...
本文将深入探讨几种在Android中实现推送方式的解决方案,以及它们各自的优缺点。 首先,我们需要理解推送方式的基础知识。在移动互联网之前,手机通常依赖窗口弹出式通知来提醒用户新事件。随着技术的发展,推送...
2. 几种常见的解决方案实现原理 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢...
本篇将深入探讨Android源码中的Email模块,揭示其背后的设计思想和技术实现,旨在帮助开发者更深入地理解Android邮件服务的运行机制。 一、Email框架概述 Android的Email组件是系统中用于处理电子邮件的核心服务,...
Android系统支持多种类型的网络连接,其中手机数据和WiFi是最常用的两种方式。这两者之间的关系较为复杂,主要包括以下方面: - **优先级比较**:在Android系统中,WiFi的优先级高于移动数据。这意味着当两者同时...