`
- 浏览:
89322 次
- 性别:
- 来自:
北京
-
android中实现利用javamail的包发送邮件
package com.Mail;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Mail extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//initial
final Button send = (Button) this.findViewById(R.id.send);
final EditText userid = (EditText) this.findViewById(R.id.userid);
final EditText password = (EditText) this.findViewById(R.id.password);
final EditText from = (EditText)this.findViewById(R.id.from);
final EditText to = (EditText)this.findViewById(R.id.to);
final EditText subject = (EditText)this.findViewById(R.id.subject);
final EditText body = (EditText)this.findViewById(R.id.body);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
GMailSender sender = new GMailSender("yourid@gmail.com",//userid.getText().toString(),
"password");//password.getText().toString());
try {
sender.sendMail(
//subject.getText().toString(),
"about Hello Wrold by email",
//body.getText().toString(),
"body of the word",
//from.getText().toString(),
"yourid@gmail.com",
//to.getText().toString());
"receipentid@gmail.com");
} catch (Exception e) {
Log.e("SendMail", e.getMessage(), e);
}
}
});
}
}
package com.Mail;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Part;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class GMailSender extends javax.mail.Authenticator {
private String mailhost = "smtp.gmail.com";
private String user;
private String password;
private Session session;
public GMailSender(String user, String password) {
this.user = user;
this.password = password;
/*
* Properties props = new Properties();
* props.setProperty("mail.transport.protocol", "smtp");
* props.setProperty("mail.host", mailhost); props.put("mail.smtp.auth",
* "true"); props.put("mail.smtp.user", this.user);
* props.put("mail.smtp.password", this.password);
*
* props.put("mail.smtp.port", "465");
* props.put("mail.smtp.socketFactory.port", "465");
* props.put("mail.smtp.socketFactory.class",
* "javax.net.ssl.SSLSocketFactory");
* props.put("mail.smtp.socketFactory.fallback", "false");
* props.setProperty("mail.smtp.quitwait", "false"); session =
* Session.getDefaultInstance(props, this);
*/
Properties props = new Properties();
//props.setProperty("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", mailhost);
props.put("mail.smtp.port", "587");
// Enable authentication if emailProperties.getSmtpUser() is not null
if (this.user != null) {
props.put("mail.smtp.auth", "true");
}
props.put("mail.smtp.user", this.user);
props.put("mail.smtp.password", this.password);
props.put("mail.smtp.starttls.enable","true");
/**seesion class
* this class use as the total application environment information
* and collect the Client with the server to build the net connect conversion information
* */
this.session = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("yourid",
"password");
}
});
}
public synchronized void sendMail(String subject, String body,
String sender, String recipients) throws Exception {
MimeMessage message = new MimeMessage(session);
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setText(body);
//add attachment
try
{
MimeMultipart allMultipart = new MimeMultipart("mixed");
MimeBodyPart attachPartPicture = createAttachment("/sdcard/androidManifest.xml");
allMultipart.addBodyPart(attachPartPicture);
message.setContent(allMultipart);
message.saveChanges();
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
//judge multi-recipient or one recipient
if (recipients.indexOf(',') > 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(
recipients));
try {
session.setDebug(true);
Transport.send(message);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
private static MimeBodyPart createAttachment(String filename) throws Exception {
// TODO Auto-generated method stub
MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
attachPart.setDataHandler(new DataHandler(fds));
attachPart.setFileName(fds.getName());
return attachPart;
}
public class ByteArrayDataSource implements DataSource {
private byte[] data;
private String type;
public ByteArrayDataSource(byte[] data, String type) {
super();
this.data = data;
this.type = type;
}
public ByteArrayDataSource(byte[] data) {
super();
this.data = data;
}
public void setType(String type) {
this.type = type;
}
public String getContentType() {
if (type == null)
return "application/octet-stream";
else
return type;
}
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(data);
}
public String getname() {
return "ByteArrayDataSource";
}
public OutputStream getOutputStream() throws IOException {
throw new IOException("Not Supported");
}
@Override
public String getName() {
// TODO Auto-generated method stub
return null;
}
}
}
可能因为某些参数的问题所以导致代码运行存在一点问题,大家只要修改参数就可以了,我和原代码比较了一下
发现问题在于端口props.put("mail.smtp.port", "587");props.put("mail.smtp.starttls.enable","true");
注意噢,587对应的是startttls,原来的代码中使用的465端口应该使用的是ssl,所以导致原来的代码无法运行。
运行本程序需要的包有activation.jar 、additionnal.jar,mail.jar,需要在project->properties->java build path中导入。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...
在处理邮件时,JAF能够帮助解析和生成邮件中的不同内容类型,如文本、图片或附件。 3. **additionnal.jar**:这个文件可能是开发者为了扩展JavaMail功能而包含的自定义库,或者是对JavaMail或JAF的补充。具体功能...
这时,我们可以利用JavaMail API在Android上直接发送邮件,无需用户介入。 JavaMail是一个跨平台的邮件处理库,它提供了与SMTP(Simple Mail Transfer Protocol)服务器通信的能力。在Android中使用JavaMail,我们...
总之,JavaMail for Android和MailSender是Android开发中发送邮件的有效工具。通过理解SMTP协议、配置邮件服务器参数、处理权限和认证,以及使用MimeMessage构建复杂的邮件结构,你可以实现功能丰富的邮件发送功能。...
在Android应用开发中,我们可以利用JavaMail API来构建邮件服务,发送包含附件的邮件。以下是对这个主题的详细讲解: 首先,我们需要在项目中添加必要的依赖库。JavaMail API的使用通常涉及到以下三个JAR文件: 1. ...
JavaMail库为开发者提供了在移动设备上实现邮件发送功能的能力,而Android系统则提供了丰富的API支持,使得这种集成变得可能。以下是对这个项目的详细解析: 首先,我们要理解JavaMail的基本概念。JavaMail是一个...
为了实现这一功能,我们需要利用JavaMail API以及SMTP(Simple Mail Transfer Protocol)服务。以下是对这个主题的详细解释: 1. **JavaMail API**:JavaMail API是Java平台上的一个标准API,用于处理邮件收发。在...
本项目“Android实现qq邮箱发送DemoMail.zip”提供了一个实用的示例,演示了如何利用Android SDK中的JavaMail API和SMTP协议来实现通过QQ邮箱发送邮件的功能。以下是对这个项目的详细解释和相关知识点的阐述。 首先...
在Android平台上,开发人员可以利用内置的SMTP(Simple Mail Transfer Protocol)支持来实现邮件发送功能。这个过程涉及到多个步骤和关键知识点,包括设置权限、构建邮件消息对象、选择邮件服务提供商以及处理网络...
在Android邮件客户端Demo中,JavaMail被用来实现邮件的发送和接收功能。开发者可以使用它来连接邮件服务器,执行身份验证,处理邮件头信息,以及管理邮件的附件。 2. **POP3和SMTP协议**:POP3(Post Office ...
在Android平台上开发一个邮件发送器应用,主要涉及的是利用JavaMail API进行邮件处理。JavaMail API是一个开源的、跨平台的API,它提供了一系列接口和类来处理邮件发送和接收。下面将详细介绍如何在Android中实现...
在Android平台上实现邮件发送功能,通常我们会利用JavaMail API,这是一个强大的开源库,可以处理复杂的邮件服务需求。本文将深入探讨如何在Android应用中使用JavaMail API,特别是通过SMTP(Simple Mail Transfer ...
本教程将详细讲解如何利用JavaMail API和Android的相关技术来实现在Android应用中后台发送邮件。 首先,我们需要了解JavaMail API,这是一个开源的Java库,用于处理邮件服务,包括创建、发送和接收邮件。在Android...
在Android平台上实现发送邮件的功能,通常我们会利用JavaMail API的封装库,这使得在移动设备上也能方便地处理电子邮件的发送。在这个过程中,`javaEmailUtils`可能是一个包含辅助工具类或者实现邮件发送逻辑的Java...
在MailDemo源码中,可以看到如何配置JavaMail API,并利用`javax.mail`包下的类如`Session`、`Message`、`Transport`等进行邮件的创建、设置和发送。 3. **SMTP协议** Simple Mail Transfer Protocol(SMTP)是...
本项目源码即展示了如何在Android环境中利用JavaMail API实现一个邮箱应用。 一、JavaMail基础 1. **JavaMail API组件**:JavaMail主要由一系列的组件构成,如`javax.mail`、`javax.mail.internet`等,它们提供了...
这通常涉及到JavaMail API的使用,而“android发邮件用的mail有关的三个jar包”正是为了实现这一功能所需的库文件。这些jar包包含了处理SMTP(简单邮件传输协议)和其他邮件传输协议所需的核心类和方法。 首先,...
以上就是Android利用JavaMail发送邮件的基本流程。在实际开发中,需要注意处理异常、权限请求(对于读取SD卡上的文件)以及在后台线程中执行此操作,以避免阻塞UI。此外,考虑到安全性,建议使用OAuth2进行身份验证...
基于Android Studio的邮件发送功能,主要是利用JavaMail API和Android的Intent系统来实现。本文将详细介绍如何通过Android Studio构建一个邮件发送的Demo。 首先,我们需要了解JavaMail API。JavaMail API是Java...
本文将深入探讨Android邮件客户端系统的核心技术和实现细节。 一、Android平台基础 Android是一个开源的操作系统,主要应用于智能手机和平板电脑。它由谷歌公司主导,开放手机联盟支持,为开发者提供了丰富的API和...