`
mars5337
  • 浏览: 89322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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中导入。
分享到:
评论
3 楼 skydove 2011-04-14  
请问博主这段代码可以在android的软件里执行吗,我怎么执行的时候老是提示找不到javamail的jar包
2 楼 skydove 2011-04-14  
哎,回答了半天测试
1 楼 sqz10200 2010-09-16  

相关推荐

    Android 使用javamail发送邮件

    总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...

    android使用javamail发送邮件jar包

    在处理邮件时,JAF能够帮助解析和生成邮件中的不同内容类型,如文本、图片或附件。 3. **additionnal.jar**:这个文件可能是开发者为了扩展JavaMail功能而包含的自定义库,或者是对JavaMail或JAF的补充。具体功能...

    Android中使用JavaMail发送邮件

    这时,我们可以利用JavaMail API在Android上直接发送邮件,无需用户介入。 JavaMail是一个跨平台的邮件处理库,它提供了与SMTP(Simple Mail Transfer Protocol)服务器通信的能力。在Android中使用JavaMail,我们...

    利用JavaMail for Android和MailSender实现发送邮件

    总之,JavaMail for Android和MailSender是Android开发中发送邮件的有效工具。通过理解SMTP协议、配置邮件服务器参数、处理权限和认证,以及使用MimeMessage构建复杂的邮件结构,你可以实现功能丰富的邮件发送功能。...

    Android JavaMail邮件发送

    在Android应用开发中,我们可以利用JavaMail API来构建邮件服务,发送包含附件的邮件。以下是对这个主题的详细讲解: 首先,我们需要在项目中添加必要的依赖库。JavaMail API的使用通常涉及到以下三个JAR文件: 1. ...

    Android系统基于javamail的手机邮件发送器

    JavaMail库为开发者提供了在移动设备上实现邮件发送功能的能力,而Android系统则提供了丰富的API支持,使得这种集成变得可能。以下是对这个项目的详细解析: 首先,我们要理解JavaMail的基本概念。JavaMail是一个...

    Android实现发送邮件

    为了实现这一功能,我们需要利用JavaMail API以及SMTP(Simple Mail Transfer Protocol)服务。以下是对这个主题的详细解释: 1. **JavaMail API**:JavaMail API是Java平台上的一个标准API,用于处理邮件收发。在...

    Android实现qq邮箱发送DemoMail.zip

    本项目“Android实现qq邮箱发送DemoMail.zip”提供了一个实用的示例,演示了如何利用Android SDK中的JavaMail API和SMTP协议来实现通过QQ邮箱发送邮件的功能。以下是对这个项目的详细解释和相关知识点的阐述。 首先...

    Android自带的邮件发送代码

    在Android平台上,开发人员可以利用内置的SMTP(Simple Mail Transfer Protocol)支持来实现邮件发送功能。这个过程涉及到多个步骤和关键知识点,包括设置权限、构建邮件消息对象、选择邮件服务提供商以及处理网络...

    Android邮件客户端Demo

    在Android邮件客户端Demo中,JavaMail被用来实现邮件的发送和接收功能。开发者可以使用它来连接邮件服务器,执行身份验证,处理邮件头信息,以及管理邮件的附件。 2. **POP3和SMTP协议**:POP3(Post Office ...

    Android邮件发送器

    在Android平台上开发一个邮件发送器应用,主要涉及的是利用JavaMail API进行邮件处理。JavaMail API是一个开源的、跨平台的API,它提供了一系列接口和类来处理邮件发送和接收。下面将详细介绍如何在Android中实现...

    android javamail的演示工程

    在Android平台上实现邮件发送功能,通常我们会利用JavaMail API,这是一个强大的开源库,可以处理复杂的邮件服务需求。本文将深入探讨如何在Android应用中使用JavaMail API,特别是通过SMTP(Simple Mail Transfer ...

    Android 后台发送邮件

    本教程将详细讲解如何利用JavaMail API和Android的相关技术来实现在Android应用中后台发送邮件。 首先,我们需要了解JavaMail API,这是一个开源的Java库,用于处理邮件服务,包括创建、发送和接收邮件。在Android...

    安卓发送邮件

    在Android平台上实现发送邮件的功能,通常我们会利用JavaMail API的封装库,这使得在移动设备上也能方便地处理电子邮件的发送。在这个过程中,`javaEmailUtils`可能是一个包含辅助工具类或者实现邮件发送逻辑的Java...

    Android高级应用源码-Android调用谷歌STMP发送邮件 MailDemo.zip

    在MailDemo源码中,可以看到如何配置JavaMail API,并利用`javax.mail`包下的类如`Session`、`Message`、`Transport`等进行邮件的创建、设置和发送。 3. **SMTP协议** Simple Mail Transfer Protocol(SMTP)是...

    基于JavaMail开发的Android邮箱项目源码.zip

    本项目源码即展示了如何在Android环境中利用JavaMail API实现一个邮箱应用。 一、JavaMail基础 1. **JavaMail API组件**:JavaMail主要由一系列的组件构成,如`javax.mail`、`javax.mail.internet`等,它们提供了...

    android发邮件用的mail有关的三个jar包

    这通常涉及到JavaMail API的使用,而“android发邮件用的mail有关的三个jar包”正是为了实现这一功能所需的库文件。这些jar包包含了处理SMTP(简单邮件传输协议)和其他邮件传输协议所需的核心类和方法。 首先,...

    android自动发送邮件(含附件)

    以上就是Android利用JavaMail发送邮件的基本流程。在实际开发中,需要注意处理异常、权限请求(对于读取SD卡上的文件)以及在后台线程中执行此操作,以避免阻塞UI。此外,考虑到安全性,建议使用OAuth2进行身份验证...

    基于Android studio的邮件发送Demo

    基于Android Studio的邮件发送功能,主要是利用JavaMail API和Android的Intent系统来实现。本文将详细介绍如何通过Android Studio构建一个邮件发送的Demo。 首先,我们需要了解JavaMail API。JavaMail API是Java...

    基于Android的邮件客户端系统

    本文将深入探讨Android邮件客户端系统的核心技术和实现细节。 一、Android平台基础 Android是一个开源的操作系统,主要应用于智能手机和平板电脑。它由谷歌公司主导,开放手机联盟支持,为开发者提供了丰富的API和...

Global site tag (gtag.js) - Google Analytics