准备工作-下载最新版本的JMail

在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);

}

}特别注意:

1.在android上发送邮件必须自己导入三个相关的JAVA文件

上述JAR文件的下载地址已经在文章开始处给出!

原文:http://blog.csdn.net/jia20003/article/details/25502643

android邮箱附件传输,Android上发送带附件的邮件相关推荐

  1. python菜谱发送到邮箱_Python菜谱5:发送带附件的邮件

    我们平时需要使用 Python 发送各类邮件,这个需求怎么来实现?答案其实很简单,smtplib 和 email库可以帮忙实现这个需求.smtplib 和 email 的组合可以用来发送各类邮件:普通 ...

  2. python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法

    最近在SIOMP系统中添加一项功能时,即自动发送带附件邮件到指定邮箱时,发现在发送时报错:错误信息:STARTTLS extension not supported by server.很是奇怪,但发 ...

  3. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

  4. php邮箱文件发送源码,php简单实现发送带附件的邮件

    本文实例讲述了php简单实现发送带附件的邮件.分享给大家供大家参考.具体如下: 下面是静态html代码: 带附件的邮件发送 发送人: 收件人: 邮件主题: 邮件内容: 附件上传: sendmail.p ...

  5. python 发送邮件 普通邮件 HTML 发送带附件 群发邮件

    我是一个测试工程师,在做自动化时,会写一些自己用的好的工具,目前有一些现成的工具,自己用着,不是大材小用,就是不符合实际需求,这次整理一个发送邮件的脚本. 文章目录 1. smtplib 与 emai ...

  6. 使用Spring发送带附件的电子邮件(站内和站外传送)

    1.使用Spring发送带附件的电子邮件 <?xml version="1.0" encoding="UTF-8"?> <beansxmlns ...

  7. 用vbs往服务器发送文件,[转] Windows 下命令行/VBS脚本,发送带附件邮件.

    利用VBScript发送邮件,以前从网上找的代码,不知原来的出处了.也不知作者是何人-.. 挺有用的脚本,我就一直在使用这个脚本来发邮件,还可以带附件.放在这里做个备份,免得到时又找不到了. 目前我就 ...

  8. .net发送带附件邮件

    开发工具:vs2008 .net发送邮件相对比较简单.如下几步: 一.配置web.config 要注意邮件服务器的权限设置,是否有此账号,对服务器IP是否有限制等,用户名和密码可以设置在这里,程序中就 ...

  9. python3发送邮件_Python3使用SMTP发送带附件邮件

    一.设置开启SMTP服务并获取授权码 可以参考第一篇文章,这里不再赘述:[一]https://www.jb51.net/article/142220.htm 二.使用Python3 发送带附件的邮件 ...

最新文章

  1. RFC 4303--ESP
  2. ionic3 动态设置tabs页面底部导航栏隐藏,并显示输入框添加评论
  3. 什么是 restful api
  4. R语言观察日志(part6)--初识rMarkdown
  5. 转: Executor类
  6. 这个温州人牛上天!30多颗北斗卫星发射成功,有他的功劳!
  7. 游戏建模成熟期:在这个阶段,技术已经比较成熟了,可以独挡一面
  8. GBK转unicode码查询表的改进
  9. 记录一次阻塞引发的系统超时
  10. 肚子上挂张画就能隐身:AI完全看不出我在哪,更看不出我是人类了 | 开源
  11. mysql linux 表名区分大小写吗_MySQL在linux下的表名如何不区分大小写
  12. 外贸单证制作常用名称中英互译表
  13. Mac 配置MySQL环境变量
  14. 《青年在选择职业时的考虑》——马克思
  15. 量化中获取A股交易日信息
  16. unity 字符串 小技巧
  17. P4188 [USACO18JAN]Lifeguards S
  18. SAP采购发票预制校验发票号重复
  19. 在Ubuntu上安装Docker Engine
  20. 基础数论讲解(详细)

热门文章

  1. Python_模拟登陆新浪微博
  2. 环信IM即时通讯的简单集成
  3. PHP的realpath(...)
  4. 公民身份证号码的编排规则
  5. 数字政府智慧城市数字化运营管理中台建设思路分析
  6. 计算机专业必须做毕业设计吗,可以写和本专业无关的论文吗_计算机系的可以写别的系的论文吗_毕业论文一定要写和专业相关的吗...
  7. [论文阅读笔记40]recall与rank相结合的多视角中文过程术语标准化
  8. 直击招聘程序员面试笔试C语言深度解析,直击招聘 程序员面试笔试C++语言深度解析(直击招聘) pdf epub mobi txt 下载...
  9. php如何查询数据库,如何在php中查询mysql数据库数据
  10. 新华三面试总结(二)