Android Java Mail与Apache Mail发送邮件对比

原文链接: 
一、邮件简介 
  一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 
  1、收件人:收件人的邮箱地址,例如[email protected] 
  2、收件人姓名:大部分的邮件显示时都会显示,例如loadfate [email protected] 
  3、发件人:发件人的邮箱地址 
  4、发件人姓名: 
  5、主题:邮件的标题 
  6、内容及附件:邮件的主要内容

 二、使用Java发邮件的通用步骤 
  一般的项目中没有单独的邮件服务器,一般情况下都是使用别人的服务器。 
  1、设置smtp服务器:不同的邮件服务器有不同的地址,例如:smtp.qq.com表示腾讯的smtp服务器。 
  2、授权:使用该服务器的帐号和密码登录该服务器。 
  3、创建邮件:创建一份包含所有信息的邮件,比如发件人、收件人、内容等。 
  4、设置邮件的属性:为邮件的属性添加数据。 
  5、发送邮件:因为封装不同,发送的方式不一致。 
  三、JavaMail与Apache Mail 
  Apache Mail是对Java Mail的封装,使用起来更加的简便,逻辑层次感更好。 
  使用Java Mail只需要导入一个jar包:mail.jar。 
  使用Apache Mail的时候需要导入两个jar包:mail.jar、commons-email-1.3.1.jar。

 四、使用Java Mail发送邮件

 public static void main(String[] args) throws Exception {
         final String user = "779554589";
         final String password = "";

         String fromAddress = "[email protected]";
         String toAddress = "[email protected]";
         String subject = "邮件测试主题";
         String content = "这是一个测试邮件<b>哈哈</b>";

         //配置参数
         Properties props = new Properties();
         props.setProperty("mail.smtp.auth", "true");
         props.setProperty("mail.transport.protocol", "smtp");
         props.setProperty("mail.host", "smtp.qq.com");
         // 方法一:使用transport对象发送邮件
         {
             //通过参数生成会话
                Session session = Session.getInstance(props);
             //启用调试模式
             session.setDebug(true);
             //创建一封邮件,并设置信息
             Message message = new MimeMessage(session);
             message.setFrom(new InternetAddress(fromAddress));
             message.setSubject(subject);
             message.setText(content);
             //创建传输
             Transport transport = session.getTransport();
             //连接smtp服务器
             transport.connect(user, password);
             //发送
             transport.sendMessage(message, new InternetAddress[] { new InternetAddress(toAddress) });
             transport.close();
         }

         // 方法二:使用Transport类静态方法发送邮件
         {
             //生成Session时以获取授权连接
             Session session = Session.getInstance(props, new Authenticator() {
                 @Override
                 protected PasswordAuthentication getPasswordAuthentication() {
                     return new PasswordAuthentication(user, password);
                 }
             });
             session.setDebug(true);
             //创建一封邮件,并设置信息
             Message message = new MimeMessage(session);
             message.setSubject(subject);
             message.setFrom(new InternetAddress(fromAddress));
             message.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
             message.setContent(content, "text/html;charset=utf-8");

             //直接发送,message通过已经授权的Session生成
             Transport.send(message);
         }
     }

五、使用Apache Mail发送邮件

public class ApacheMailTest {
     // smtp服务器
     private String hostName = "smtp.qq.com";
     // 帐号与密码
     private String userName = "779554589";
     private String password = "这是个秘密";
     // 发件人
     private String fromAddress = "[email protected]";
     // 发件人姓名
     private String fromName = "loadfate";

     public static void main(String[] args) throws Exception {
         // 收件人与收件人名字
         String toAddress = "[email protected]";
         String toName = "loadfate";
         ApacheMailTest test = new ApacheMailTest();
         // 所有的异常都为处理,方便浏览

         test.sendSimpleEmail(toAddress, toName);
         test.sendHtmlEmail(toAddress, toName);
         test.sendMultiPartEmail(toAddress, toName);
         System.out.println("发送完成");
     }

     // 发送简单邮件,类似一条信息
     public void sendSimpleEmail(String toAddress, String toName) throws Exception {
         SimpleEmail email = new SimpleEmail();
         email.setHostName(hostName);// 设置smtp服务器
         email.setAuthentication(userName, password);// 设置授权信息
         email.setCharset("utf-8");
         email.setFrom(fromAddress, fromName, "utf-8");// 设置发件人信息
         email.addTo(toAddress, toName, "utf-8");// 设置收件人信息
         email.addCc(xxx, xxx);//设置抄送
         email.addBcc(xxx, xxx);//设置密送
         email.setSubject("测试主题");// 设置主题
         email.setMsg("这是一个简单的测试!");// 设置邮件内容
         email.send();// 发送邮件
     }

     // 发送Html内容的邮件
     public void sendHtmlEmail(String toAddress, String toName) throws Exception {
         HtmlEmail email = new HtmlEmail();
         email.setHostName(hostName);
         email.setAuthentication(userName, password);
         email.setCharset("utf-8");
         email.addTo(toAddress, toName, "utf-8");
         email.addCc(xxx, xxx);//设置抄送
         email.addBcc(xxx, xxx);//设置密送
         email.setFrom(fromAddress, fromName, "utf-8");
         email.setSubject("这是一个html邮件");
         // 设置html内容,实际使用时可以从文本读入写好的html代码
         email.setHtmlMsg("<div style=‘width:100px;height:200px;‘>a</div>");
         email.send();

     }

     // 发送复杂的邮件,包含附件等
     public void sendMultiPartEmail(String toAddress, String toName) throws Exception {
         MultiPartEmail email = null;
         email = new MultiPartEmail();
         email.setHostName(hostName);
         email.setAuthentication(userName, password);
         email.setCharset("utf-8");
         email.addTo(toAddress, toName, "utf-8");
         email.addCc(xxx, xxx);//设置抄送
         email.addBcc(xxx, xxx);//设置密送
         email.setFrom(fromAddress, fromName, "utf-8");
         email.setSubject("这是有附件的邮件");
         email.setMsg("<a href=‘#‘>测试内容</a>");

         // 为邮件添加附加内容
         EmailAttachment attachment = new EmailAttachment();
         attachment.setPath("D:\\邮件.txt");// 本地文件
         // attachment.setURL(new URL("http://xxx/a.gif"));//远程文件
         attachment.setDisposition(EmailAttachment.ATTACHMENT);
         attachment.setDescription("描述信息");
         // 设置附件显示名字,必须要编码,不然中文会乱码
         attachment.setName(MimeUtility.encodeText("邮件.txt"));
         // 将附件添加到邮件中
         email.attach(attachment);
         email.send();
     }
 }

JavaMail.jar下载地址

时间: 2024-12-28 01:09:51

Android Java Mail与Apache Mail发送邮件对比的相关文章

Java发邮件:Java Mail与Apache Mail

一.邮件简介 一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 1.收件人:收件人的邮箱地址,例如[email protected] 2.收件人姓名:大部分的邮件显示时都会显示,例如loadfate [email protected] 3.发件人:发件人的邮箱地址 4.发件人姓名: 5.主题:邮件的标题 6.内容及附件:邮件的主要内容 二.使用Java发邮件的通用步骤 一般的项目中没有单独的邮件服务器,一般情况下都是使用别人的服务器. 1.设置smtp服务器:不同的邮件服务

Java Mail + 消息队列 高效率发送邮件

本文主要是讲述JavaMail 和 消息队列的一些简单应用,这是第一次写博客,有很多不足的地方希望各位看客给出宝贵建议,另外本文写的不对的地方,请各位大神勿喷!!! 很多人都会在各个系统里面遇到发送邮件的功能,这次开博写文章也是在整理过程中发现,团队中有个新来的小童鞋对发送邮件这块不是很熟,所以自己准备写一个简单的样例. 这里加了一个消息队列主要是用于高并发的情况下,对邮件发送的控制,并可以对消息进行缓存,防止消息丢失. 话不多说直接上代码: 用maven对项目进行的管理,pom.xml <de

System.net.mail 腾讯ssl发送邮件超时

我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送都换成ssl了,之前用的是25端口,现在换成了465或587,于是修改代码如下: MailMessage msgMail = new MailMessage("发件箱", "收件箱", "邮件标题", "邮件内容",2); Smt

Getting error message “java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage” while executing ant mail task

add mail.jar and activation.jar in ANT_HOME/lib or use both jar form your project/lib 问题描述: ant执行发送email的功能时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage 解决办法: 将mail.jar and activation.jar放到ant的lib下 转自:http://stackoverflow.com/

Java Web总结二十三发送邮件

一.所需jar包: 1.mail.jar 2.activation.jar 二.代码: 1.MailUtil.java package com.gnnuit.web.mail.util; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress;

[Android] [Java] Process 创建+控制+分析 经验浅谈

无论是Android亦或者Java中或多或少需要调用底层的一些命令,执行一些参数: 此时我们需要用到Java的Process来创建一个子进程,之所以是子进程是因为此进程依赖于发起创建请求的进程,如果发起者被Kill那个子进程也将Kill. 对于Process相信使用过的朋友一定不会陌生,它具有如下特点: 1.创建简单 2.控制难 3.容易导致无法创建子进程 4.如果是多线程那么很有可能造成内存溢出 以上现象如果你只是偶尔使用一次,创建一个进程或许你什么都没有感觉到,但是如果你使用了多线程,进行了

Android java传递int类型数组给C

接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] arrElementsIncrease(int[] intArray); 项目布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sc

[掌眼]iOS / Android / java / node.js 通用的 AES256 加解密算法

example.m NSString *text = @"text"; NSString *key32 = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding]; NSString *encryptedData = [[data AES256EncryptWithKey:key32] base64EncodedStringWi

Android Bitmap 全面解析(四)图片处理效果对比 ...

对比对象: UIL Volley 官方教程中的方法(此系列教程一里介绍的,ImageLoader的处理方法和官方的差不多) ------------------------------------------------------------------------ 首先单张图片的压缩处理,也是分析重点 专门撸了一个小demo(结尾会放出下载连接)将对应计算方法copy了出来,然后计算了几十组数据,进行了对比 原图宽高都是一个10000以内的随机整数,限定大小是400 200,然后进行压缩处理