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

本文实例讲解了基于基于JMail实现Android邮件发送功能,分享给大家供大家参考,具体内容如下

在android上发送邮件方式:

第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有一点是比较方便,不需要写很多代码,但是不是很灵活。

第二种:基于JMail实现,可以很灵活的自己设置各种属性,不需要GMail帐号

在第二种方式的实现之前,看一下JMail对EMail结构的划分:

基于SMTP协议发送EMail,所以客户端必须要知道SMTP的主机。

腾讯邮件的SMTP主机为:stmp.qq.com端口为465基于SSL协议。

最后我做了一个简单的封装,把发送文本加图像附件的功能做出了。

一个单独的Class,只要调用一下即可完成:

package com.gloomyfish.jmail.demo; 

import java.util.Date;
import java.util.Properties; 

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Multipart;
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 EMailSender { 

  private String host;
  private String port;
  private String userName;
  private String password;
  private String[] images; 

  public String[] getImagePath() {
    return images;
  } 

  public void setImagePath(String[] imagePath) {
    this.images = imagePath;
  } 

  public EMailSender(String host, String port, String userName, String password)
  {
    this.host = host;
    this.port = port;
    this.userName = userName;
    this.password = password;
  } 

  public void sendEmail(String subject, String recepits, String sender, String content)
  {
    Properties props = new Properties();
    props.put("mail.smtp.host", host); //设置smtp的服务器地址
    // props.put("mail.smtp.starttls.enable", "true");
    // props.put("mail.smtp.port", port); // 设置端口
    // props.put("mail.smtp.auth", "true"); //设置smtp服务器要身份验证。 

    props.put("mail.smtp.socketFactory.port", port);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", port); 

    // 返回授权Base64编码
    PopupAuthenticator auth = new PopupAuthenticator(userName, password);
    // 获取会话对象
    Session session = Session.getInstance(props, auth);
    // 设置为DEBUG模式
    session.setDebug(true); 

    // 邮件内容对象组装
    MimeMessage message = new MimeMessage(session);
    try
    {
      Address addressFrom = new InternetAddress(sender, "Jia Zhi Gang");
      Address addressTo = new InternetAddress(recepits, "My QQ E-Mail");
      message.setSubject(subject);
      message.setSentDate(new Date());
      message.setFrom(addressFrom);
      message.addRecipient(Message.RecipientType.TO,addressTo); 

      // 邮件文本/HTML内容
      Multipart multipart = new MimeMultipart();
      MimeBodyPart messageBodyPart = new MimeBodyPart();
      messageBodyPart.setContent(content, "text/html");
      multipart.addBodyPart(messageBodyPart); 

      // 添加邮件附件
      if (images != null && images.length > 0) {
        for (String filePath : images) {
          MimeBodyPart attachPart = new MimeBodyPart();
          DataSource source = new FileDataSource(filePath);
          attachPart.setDataHandler(new DataHandler(source));
          attachPart.setFileName(filePath);
          multipart.addBodyPart(attachPart);
        }
      } 

      // 保存邮件内容
      message.setContent(multipart); 

      // 获取SMTP协议客户端对象,连接到指定SMPT服务器
      Transport transport = session.getTransport("smtp");
      transport.connect(host, Integer.parseInt(port), userName, password);
      System.out.println("connet it success!!!!"); 

      // 发送邮件到SMTP服务器
      Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );
      Transport.send(message);
      System.out.println("send it success!!!!"); 

      // 关闭连接
      transport.close();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  } 

  public String getHost() {
    return host;
  } 

  public void setHost(String host) {
    this.host = host;
  } 

  public String getPort() {
    return port;
  } 

  public void setPort(String port) {
    this.port = port;
  } 

  public String getUserName() {
    return userName;
  } 

  public void setUserName(String userName) {
    this.userName = userName;
  } 

  public String getPassword() {
    return password;
  } 

  public void setPassword(String password) {
    this.password = password;
  } 

}

用户授权类:

package com.gloomyfish.jmail.demo; 

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication; 

class PopupAuthenticator extends Authenticator {
  private String userName;
  private String password;
  public PopupAuthenticator(String userName, String password)
  {
    this.userName = userName;
    this.password = password;
  }
  public PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(userName, password);
  }
}

特别注意:
在android上发送邮件必须自己导入三个相关的JAVA文件

以上就是本文的全部内容,希望对大家的学习Android软件编程有所帮助。

(0)

相关推荐

  • Android开发中怎样调用系统Email发送邮件(多种调用方式)

    我们都知道,在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外. 在Android中,调用Email有三种类型的Intent: Intent.ACTION_SENDTO 无附件的发送 Intent.ACTION_SEND 带附件的发送 Intent.ACTION_SEND_MULTIPLE 带有多附件的发送 当然,所谓的调用Email,只是说Email可以接收Intent并做这些事情,可能也有其他的应用程序实现了相关功能,所以在执行的时候,会出现选择

  • Android 后台发送邮件示例 (收集应用异常信息+Demo代码)

    上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相关的异常信息变成请求参数发送到服务器.这个对做过web开发的人来说,服务端处理是很简单.不过对很多没做个web的人来说却是麻烦事.今天介绍个更简单的方法,我们把异常信息收集后,通过后台发送邮件方法,把相关异常信息发送到我们指定的邮箱里面. 这篇文章是实用性文章,不会涉及太多理论分析.主要是让大家看了以后知道怎么在自己的应用里面添加这个功能. 1.第三方库这次发

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

    这个主要是搜集app报错信息之后将信息上传到邮箱,请不要用做其他非法用途.代码请参考: MailUtils.Java public class MailUtils { /** * 创建一封只包含文本的简单邮件 * * @param session 和服务器交互的会话 * @param sendMail 发件人邮箱 * @param receiveMail 收件人邮箱 * @return * @throws Exception */ public static MimeMessage create

  • Android调用系统的发邮件功能的小例子

    复制代码 代码如下: package com.example.myapi.email; import java.util.ArrayList;import java.util.List; import android.content.Context;import android.content.Intent;import android.net.Uri; public class SendEmailUtils {    private SendEmailUtils(){}    private

  • Android发送邮件的方法实例详解

    本文实例讲述了Android发送邮件的方法.分享给大家供大家参考,具体如下: 在android手机中实现发送邮件的功能也是不可缺少的.如何实现它呢?下面以简单的例子进行说明. 程序如下: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import

  • Android实现登录邮箱的自动补全功能

    本文实例为大家分享了Android登录邮箱自动补全功能的实现方法,供大家参考,具体内容如下 效果: 实现原理: 1.继承重写简单控件AutoCompleteTextView 2.编写自定义数据适配器和布局文件,并实现文字变化监听器 3.通过组合方式,实现右侧的删除图标.并根据焦点和文字的变化,动态显示右侧删除图标. 1.通过继承自简单控件AutoCompleteTextView实现帐号自动补全 关键代码: public class AutoComplete extends AutoComplet

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

    本文实例讲解了基于基于JMail实现Android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有一点是比较方便,不需要写很多代码,但是不是很灵活. 第二种:基于JMail实现,可以很灵活的自己设置各种属性,不需要GMail帐号 在第二种方式的实现之前,看一下JMail对EMail结构的划分: 基于SMTP协议发送EMail,所以客户端必须要知道SMTP的主机. 腾讯邮件的SMTP主机为:s

  • Java实现带附件的邮件发送功能

    本文实例为大家分享了Java实现邮件发送功能的具体代码,供大家参考,具体内容如下 1.需要导入mail.jar.activation.jar这两个邮件发送的jar包,可在网上搜索并下载 2.需要设置相关邮箱服务器,我用的是QQ邮箱,操作如下所示:开启相关服务,并生产授权码(这个代码中会用到). 代码如下所示: package com.ecg.controller; import java.io.UnsupportedEncodingException; import java.security.

  • JavaMail实现带附件的邮件发送

    本文实例为大家分享了JavaMail实现带附件的邮件发送的具体代码,供大家参考,具体内容如下 发送纯文本的邮件 package com.haiwen.test;   import java.util.Date; import java.util.Properties;   import javax.mail.Message.RecipientType; import javax.mail.Session; import javax.mail.Transport; import javax.mai

  • C++实现含附件的邮件发送功能

    C++实现邮件发送程序在vs2013测试通过,一共3个文件,发邮件的程序封装为Csmtp 类. 1.测试用的主函数 // #include "Csmtp.h" #pragma comment(lib, "Kernel32.lib") int main() { Csmtp mail( 25, "smtp.126.com", "username@126.com",// 来源邮箱 "pwd", "use

  • php简单实现发送带附件的邮件

    本文实例讲述了php简单实现发送带附件的邮件.分享给大家供大家参考.具体如下: 下面是静态html代码: <html> <head> <title>带附件的邮件发送</title> </head> <body> <form method="post" name="form1" action="sendmail.php" ENCTYPE="multipart/f

  • 使用Spring的JAVA Mail支持简化邮件发送功能

    闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是MailSender接口,在Spring3.0中提供了一个实现类JavaMailSenderImpl,这个类是发送邮件的核心类.可以通过在配置文件中配置使用,当然也可以自己硬编码到代码中(方便起见,下面的演示代码都是硬编码到代码中,省得配置麻烦). Spring提供的邮件发送不仅支持简单邮件的发送.添加附件,而且还可

  • PHPMailer发送HTML内容、带附件的邮件实例

    PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及可以添加附件发送,并不像PHP本身mail()函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能. 本文将结合实例代码,讲解如何设置和实现发送HTML以及带附件的邮件功能. 首先,您可以到PHPMailer获取最新的下载包,解压到WEB目录下. 然后建立一个sendmail.php的文件,载入PHPMailer类,并设置相关属性参数,如邮件服务器地址,发件人和收件人,邮件内容等等,详情

  • python selenium实现发送带附件的邮件代码实例

    这篇文章主要介绍了python selenium实现发送带附件的邮件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 163邮件登录首页 登录成功断言是否有退出按钮 点击退出退出登录 代码如下 from selenium import webdriver import unittest import time class VisitSogouByChrome(unittest.TestCase): def setUp(self): # 启

  • Java实现批量发送带附件的邮件代码

    目录 前言 实体类(注意注释) 实现类 方法中调用,详情如下: 总结 前言 新功能上线时要经常发包到测试或生产服务器进行模块部署,但由于安全限制只能通过邮件传输小于10M的附件这种方式把jar包上传到服务器.所以往往要发送几十个邮件手动发送比较麻烦,偷懒写了个粘贴即用的Demo,如有不足,请多指教! 实体类(注意注释) 代码详情如下: package Email; /* * 参数实体类 * */ public class EmailParameter { //发信邮箱 private Strin

  • 如何用ASP发送带附件的邮件?

    如何用ASP发送带附件的邮件?<% Option Explicit Dim objMail Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From = "liyanbing@163.net " objMail.Subject = "闪亮日子之星河影动" objMail.AttachFile("s:\flashdays\images\win.jpg"

随机推荐