邮件开发

1.背景:很多web应用在开发的时候都需要集成邮件发送功能;例如新用户注册欢迎邮件;

2.邮件简介:

        学习目标:

        邮件服务器:邮局;

        

        邮件的发送过程:

        

        

        邮件的协议(重点):

SMTP:Simple Message Transfer Protocal 简单消息传输协议(邮件发送协议)

默认用的端口:25

POP:Post Office Protocal 邮局协议(接收邮件协议)

默认用的端口:110

        手工发送邮件:

        前提:a、使用telnet发送,必须有telnet客户端

         

        b、准备两个邮箱:[email protected]       iamsorry

                  [email protected]  iamsorry

        发送邮件的邮箱账户名和密码需要进行Base64编码:

          itheimacloud                 aXRoZWltYWNsb3Vk

          iamsorry        aWFtc29ycnk=

       c、知道使用的发送服务器和接收服务器的地址

        POP3服务器:pop.163.com     SMTP服务器:smtp.163.com

      SMTP协议:

      ehlo XXX        向发送服务器打招呼

      auth login              向发送服务器请求身份认证

      mail from:<[email protected]>   发件人

      rcpt to:<[email protected]>             收件人

      data                                    邮件内容开始标记

      --------------

      邮件内容:要符合规范RFC822规范

      from:[email protected](发件人)

      to:[email protected](收件人)

      subject:this is my first email(标题)

      (正文内容)

      aaaaaaaaaaaaaaaaaaa

      bbbbbbbbbbbbbbbbb

      --------------

.                                         邮件内容结束

      

      

      POP协议:

      

3.邮件发送过程:

4.JavaMail发送邮件:

1、简介:

JavaMail是一套发送邮件的规范,属于JavaEE技术之一。

2、JavaMail环境的搭建

mail.jar

jaf.jar(JDK5-):Java Activation Framework JavaMail中用它读取磁盘文件

3、JavaMail中的核心类

Message:代表着一封邮件,实现类MimeMessage

Properties(配置文件内容或此类的实例对象属性设定)

mail.smtp.host 指定连接的邮件服务器主机名

mail.transport.protocol 指定采用的邮件发送协议

mail.store.protocol 指定采用的邮件接收协议

mail.smtp.auth 指定客户端是否向邮件服务器提交认证

 1 import java.io.FileOutputStream;
 2 import java.util.Properties;
 3
 4 import javax.mail.Message;
 5 import javax.mail.Session;
 6 import javax.mail.internet.InternetAddress;
 7 import javax.mail.internet.MimeMessage;
 8
 9 //利用JavaMailAPI创建一封只有文本内容的邮件
10 public class MailDemo1 {
11
12     public static void main(String[] args) throws Exception {
13         Properties props = new Properties();//不设置任何配置,发送时需要
14         Session session = Session.getInstance(props);
15         MimeMessage msg = new MimeMessage(session);
16         //设置发件人
17         msg.setFrom(new InternetAddress("[email protected]"));
18         //设置收件人:正常送(TO)、抄送(CC)、密送(BCC)
19         msg.setRecipients(Message.RecipientType.TO, "[email protected]");
20         //设置主题
21         msg.setSubject("JavaMail发送的邮件");
22         //设置邮件正文内容
23         msg.setText("hello");
24         msg.saveChanges();
25         //存到磁盘上:邮件文件的扩展名*.eml
26         msg.writeTo(new FileOutputStream("d:/1.eml"));
27
28     }
29
30 }

MailDemo1

 1 import java.util.Properties;
 2
 3 import javax.mail.Message;
 4 import javax.mail.Session;
 5 import javax.mail.Transport;
 6 import javax.mail.internet.InternetAddress;
 7 import javax.mail.internet.MimeMessage;
 8
 9 public class SendMail1 {
10
11     public static void main(String[] args) throws Exception {
12         Properties props = new Properties();//不设置任何配置,发送时需要
13         props.setProperty("mail.host", "smtp.163.com");
14         props.setProperty("mail.transport.protocol", "smtp");
15         props.setProperty("mail.smtp.auth", "true");//请求认证,与JavaMail的实现有关
16         Session session = Session.getInstance(props);
17         session.setDebug(true);//调试模式
18         MimeMessage msg = new MimeMessage(session);
19         //设置发件人
20         msg.setFrom(new InternetAddress("[email protected]"));
21         //设置收件人:正常送(TO)、抄送(CC)、密送(BCC)
22         msg.setRecipients(Message.RecipientType.TO, "[email protected]");
23         //设置主题
24         msg.setSubject("JavaMail发送的邮件");
25         //设置邮件正文内容
26         msg.setText("hello");
27         msg.saveChanges();
28         //发送邮件
29         Transport ts = session.getTransport();
30         ts.connect("itheimacloud", "iamsorry");
31         ts.sendMessage(msg, msg.getAllRecipients());
32     }
33
34 }

SendMail1

3.1只有文本的邮件

3.2文本中内嵌图片的邮件

3.3文本中内嵌图片还有附件的邮件

5.邮件中的编码问题:

a、附件的名称不对

b、中文乱码问题

主题:一般没有问题

文本内容:

附件名称:

6.利用Tomcat的JNDI容器管理JavaMail中的session:

第一步:把javamail的jar包拷贝到Tomcat\lib目录下

第二步:在引用的META-INF目录下,建立一个context.xml的配置文件,内容如下

第三步:在web环境下通过JNDI获取JavaMail的Session

字节码冲突:javax.mail.Session.class有两处。干掉一处即可(只有干掉自己应用中的mail.jar)

原文地址:https://www.cnblogs.com/biaogejiushibiao/p/9356713.html

时间: 2024-10-02 20:09:38

邮件开发的相关文章

JavaMail 邮件开发

(api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[很多客户端工具, foxmail ] 邮件开发准备: 准备工作, 环境搭建: 1. 本地搭建一个邮件服务器 -à 易邮服务器,eyoumailserversetup.exe 2. 新建邮箱账号 张三给李四发邮件. 步骤1: 新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com 步骤

JavaMail邮件开发

普通邮件 JavaMail开发,先引入jar文件: activation.jar [如果使用jdk1.6或以上版本,可以不用这个jar文件] mail.jar [邮件发送核心包] 注意 注意 Java project. 如果是web项目,因为javaee自带的有邮件功能,可能存在问题! 我们要用自己的mail.jar文件功能! 需要删除javaee中mail包! /** * 1. 发送一封普通邮件 * @author */ public class App_SendMail { @Test pu

邮件开发一些基础知识

一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu.163等等他们都有自己的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. 电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个账户,用户在邮件服务器上申请了一

邮件开发(二)命令行发邮件

1.打开命令行,输入指令:telnet smtp.qq.com 587 这儿的服务器地址和端口是上面提到的,但是465端口似乎用不了,这儿使用587端口. 2.回车后出现以下界面: 3.向服务器表明身份: 1.输入:ehlo zby 2.回显250状态码 3.zby可以任意替换,这儿是我姓名简写. 4.输入命令:starttls 5.输入:auth login 6.看到334返回码,开始邮箱验证,输入邮箱的base64编码(运行之前的工具类得到): 7.看到334返回码,开始授权码验证,是授权码

java邮件开发

发送邮件依赖一个jar包 javax.mail.jar 包 用之前先把包导入http://files.cnblogs.com/files/wenjie123/javax.mail.jar.rar package com.svse;import java.io.File; /* *建立 附件类,只有文件,即附件才文件名 */ public class AttachBean { private String cid; private File file; private String fileNam

Java-Mail邮件开发

Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务. 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的. 我们来看看传统邮件是如何运作的.假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢? 首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去. 信件会从就近的小邮局转运到大邮局,再从大邮局往别的城市发,比如先发到天津,再走海运到达香港,也可能走京九线到香港,但

Java邮件开发(三):解决附件名为乱码及显示友好名称

1.附件的名称只能为英文,中文乱码 2.友好名称的显示. 我们使用163等邮箱发送邮件时,我们经常可以看到收件人一栏中会是:张益达 <[email protected]>这种方式.在上一版本的代码中并没有使用这样的方式. 下面解决这两个问题 1. 对于中文乱码,是因为邮件要求所有的字符必须是ascII字符,中文字符当然不可以.因此我们只需要把我们的中文全部转码就可以了. 而JavaMail提供了这样一个类:MimeUtility.使用这个类的encodeText方法就可以对中文进行编码. 2.

Java - Java Mail邮件开发(2)springboot +Java Mail + Html

1.springboot + Java Mail + Html 项目结构: pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.or

邮件开发——base64账号密码转换

1 package com.hq.base64; 2 3 import java.io.BufferedReader; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStreamReader; 9 import java.i