Android实现带附件的邮件发送功能_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软件编程有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
邮件
android 发送邮件附件、邮件作为附件发送、python 发送邮件 附件、批量发送不同附件邮件、java发送邮件带附件,以便于您获取更多的相关知识。

时间: 2024-12-22 12:45:18

Android实现带附件的邮件发送功能_Android的相关文章

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

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

用JavaMail API编写可带附件的邮件发送程序

程序 利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序.也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet. (没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath) 一.JavaMail中一些我们需要的类 1.Properties JavaMail需要Prop

初学jsp,发送带附件的邮件,请问怎么解决?

问题描述 index.jsp代码:<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/htm

php简单实现发送带附件的邮件_php技巧

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

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

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

kettle发送带附件的邮件

问题描述 kettle发送带附件的邮件 在用kettle发送带附件的邮件时,邮件能够发送成功,但是邮件里面没有附件,哪位大神给个成功的案例,或者帮忙看看是哪里的问题,谢谢! 解决方案 http://blog.csdn.net/ganggetwo/article/details/50914826 解决方案二: import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Proper

Codeigniter实现发送带附件的邮件

 这篇文章主要介绍了Codeigniter实现发送带附件的邮件的方法,涉及Codeigniter中attach方法的使用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了Codeigniter实现发送带附件的邮件的方法.分享给大家供大家参考.具体分析如下: attach() 方法允许你的发邮件时带上附件,下面是演示代码 代码如下: $this->load->library('email'); $this->email->from('w3@w3mentor.com'

javamail-javaMail发送带附件的邮件时,png的附件可以发送而jpg的图片则会导致发送失败

问题描述 javaMail发送带附件的邮件时,png的附件可以发送而jpg的图片则会导致发送失败 同一个图片的png可以发送,而jpg格式发送失败,定位到代码处如下: // 保存邮件到指定的收件夹中 public boolean copyMessage(Message[] message, String folderName) throws MessagingException { openFolder(folderName, Folder.READ_WRITE);// 打开指定的邮件夹 fol

Codeigniter实现发送带附件的邮件_php实例

本文实例讲述了Codeigniter实现发送带附件的邮件的方法.分享给大家供大家参考.具体分析如下: attach() 方法允许你的发邮件时带上附件,下面是演示代码 复制代码 代码如下: $this->load->library('email'); $this->email->from('w3@w3mentor.com', 'W3M'); $this->email->subject('Email Test with attachment'); $this->ema