(转)JavaMail邮件发送-发送一个文本邮件和一些问题说明
需要下载的JAR包:
JavaMail:http://www.oracle.com/technetwork/java/javamail/index.html
JAF:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html
加入的包有:mail.jar activation.jar
你要准备一个邮箱账户,就用网易的吧,然后打开SMTP功能


关于网易的一些端口信息参考下面:

每个公司都是不一样的,使用SSL的和不实用的也不一样
使用的开发和编译环境是JDK1.4,如果你使用的是JDK1.5环境,那么你的环境需要修改一些东西,找到 javaee.jar 删除里面的 mial 包,否则会有冲突

否则会报错:
- Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
- at javax.mail.Session.loadProvidersFromStream(Session.java:928)
- at javax.mail.Session.access$000(Session.java:174)
- at javax.mail.Session$1.load(Session.java:870)
- at javax.mail.Session.loadResource(Session.java:1084)
- at javax.mail.Session.loadProviders(Session.java:889)
- at javax.mail.Session.<init>(Session.java:210)
- at javax.mail.Session.getInstance(Session.java:249)
- at com.mail.TextMail.main(TextMail.java:22)
下面我直接贴代码了
- package com.mail;
- import java.util.Date;
- import java.util.Properties;
- import javax.mail.Message;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeUtility;
- // 如果你使用JDK1.4以上运行 会出现 Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
- // 需要你找到 javaee.jar 删掉 里面的 mail 包
- public class TextMail {
- public static void main(String[] args) throws Exception {
- // 配置文件对象
- Properties props = new Properties();
- // 邮箱服务地址
- props.put( "mail.smtp.host ", "smtp.163.com ");
- // 是否进行验证
- props.put("mail.smtp.auth", "true");
- // 创建一个会话
- Session session = Session.getInstance(props);
- // 打开调试,会打印与邮箱服务器回话的内容
- session.setDebug(true);
- Message message = new MimeMessage(session);
- // 如果发送人没有写对,那么会出现 javamail 550 Invalid User
- // 如果发送人写的和使用的帐号不一致,则会出现 553 Mail from must equal authorized user
- InternetAddress from = new InternetAddress("test20120711120200@163.com");
- from.setPersonal(MimeUtility.encodeText("java小强<test20120711120200@163.com>"));
- message.setFrom(from);
- InternetAddress to = new InternetAddress("455213313@qq.com");
- message.setRecipient(Message.RecipientType.TO, to);
- message.setSubject(MimeUtility.encodeText("强哥邀请,谁敢不从!"));
- message.setText("强哥邀请你访问我的博客:http://cuisuqiang.iteye.com/!");
- message.setSentDate(new Date());
- Transport transport = session.getTransport("smtp");
- // 具体你使用邮箱的smtp地址和端口,应该到邮箱里面查看,如果使用了SSL,网易的端口应该是 465/994
- transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");
- transport.sendMessage(message, message.getAllRecipients());
- transport.close();
- System.out.println("发送完毕");
- }
- }
需要注意的有
- InternetAddress from = new InternetAddress("test20120711120200@163.com");
和
- transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");
这两个邮箱的地址必须相同,否则会出现
- Exception in thread "main" javax.mail.MessagingException: 553 Mail from must equal authorized user
- at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)
- at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)
- at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)
- at com.mail.TextMail.main(TextMail.java:38)
你上网查都是说用户验证不对,其实一般大家都是按照别人代码拷贝的,然后修改了用户和密码,怎么会不对!
我这个账户和密码都是可以用的,对不起网易了!
由于上面我设置了打印调试,所以你在控制台会看到如下内容:
- DEBUG: setDebug: JavaMail version 1.3.1
- DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
- DEBUG SMTP: useEhlo true, useAuth true
- DEBUG SMTP: trying to connect to host "smtp.163.com", port 25
- 220 163.com Anti-spam GT for Coremail System (163com[20111010])
- DEBUG SMTP: connected to host "smtp.163.com", port: 25
- EHLO cuisuqiang
- 250-mail
- 250-PIPELINING
- 250-AUTH LOGIN PLAIN
- 250-AUTH=LOGIN PLAIN
- 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrgdNesUCa0xDrUUUUj
- 250-STARTTLS
- 250 8BITMIME
- DEBUG SMTP: Found extension "PIPELINING", arg ""
- DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
- DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
- DEBUG SMTP: Found extension "coremail", arg "1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrgdNesUCa0xDrUUUUj"
- DEBUG SMTP: Found extension "STARTTLS", arg ""
- DEBUG SMTP: Found extension "8BITMIME", arg ""
- DEBUG SMTP: Attempt to authenticate
- AUTH LOGIN
- 334 dXNlcm5hbWU6
- dGVzdDIwMTIwNzExMTIwMjAw
- 334 UGFzc3dvcmQ6
- dGVzdDEyMzQ1Ng==
- 235 Authentication successful
- DEBUG SMTP: use8bit false
- MAIL FROM:<test20120711120200@163.com>
- 250 Mail OK
- RCPT TO:<455213313@qq.com>
- 250 Mail OK
- DEBUG SMTP: Verified Addresses
- DEBUG SMTP: 455213313@qq.com
- DATA
- 354 End data with <CR><LF>.<CR><LF>
- Message-ID: <14518194.1341995865564.JavaMail.Administrator@cuisuqiang>
- Date: Wed, 11 Jul 2012 16:37:45 +0800 (CST)
- From: "=?GBK?Q?java=D0=A1=C7=BF<test20120711120200@163.com>?=" <test20120711120200@163.com>
- To: 455213313@qq.com
- Subject: =?GBK?B?x7+459H7x+ujrMutuNKyu7TTo6E=?=
- Mime-Version: 1.0
- Content-Type: text/plain; charset=GBK
- Content-Transfer-Encoding: quoted-printable
- =C7=BF=B8=E7=D1=FB=C7=EB=C4=E3=B7=C3=CE=CA=CE=D2=B5=C4=B2=A9=BF=CD=A3=BAhtt=
- p://cuisuqiang.iteye.com/=A3=A1
- .
- 250 Mail OK queued as smtp2,DNGowEB52UhcO_1PZmMMCA--.937S2 1341995868
- QUIT
这些都是程序与邮件服务商的一些交互信息!
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com
(转)JavaMail邮件发送-发送一个文本邮件和一些问题说明的更多相关文章
- spring boot发简单文本邮件
首先要去邮箱打开POP3/SMTP权限: 然后会提供个授权码,用来发送邮件.忘记了,可以点生成授权码再次生成. 1.引入spring boot自带的mail依赖,这里版本用的:<spring-b ...
- 使用JavaMail发送带附件的邮件
所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...
- 【Mail】JavaMail发送带附件的邮件(二)
上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...
- 使用JavaMail发送邮件-从FTP读取图片并添加到邮件正文发送
业务分析: 最近工作需要,需要从FTP读取图片内容,添加到邮件正文发送.发送邮件正文,添加附件采用Spring的MimeMessageHelper对象来完成,添加图片也将采用MimeMessageHe ...
- python实现发送文本邮件
简单实现了python发送文本邮件 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/25 17:09 # @Author ...
- thunderbird发送纯文本邮件
向邮件列表中发邮件时,要求邮件格式必须是纯文本格式的,在thunderbird中,邮件格式(plain text或者html格式)在[工具->账户设置->[账户名称]->通讯录]下的 ...
- (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理
博客源地址:http://www.cnblogs.com/xdp-gacl/p/4209586.html 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电 ...
- JavaWeb学习总结(五十一)——邮件的发送与接收原理
一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...
- JavaMail入门:创建纯文本、HTML格式的邮件
转自:http://haolloyin.blog.51cto.com/1177454/353849/ 在 http://java.sun.com/products/javamail/ 下载了 Java ...
随机推荐
- Emacs Helm: 使用关键字搜索、获取、执行任何东西
Helm 是一个emacs的软件包,定义了一个通用框架,交互式地.动态缩减式地使用关键字选择.获取.执行任何东西.比如: 执行emacs 命令 打开文件 查看man文档 执行grep操作 执行apt命 ...
- Python flask网站部署总结
先开一贴,有空来总结下前段时间的网站部署情况.此次部署采用Gunicorn + Nginx + supervisor的组合在VPS环境中部署flask网站应用. Ubuntu环境准备 准备python ...
- golang简易版聊天室
功能需求: 创建一个聊天室,实现群聊和单聊的功能,直接输入为群聊,@某人后输入为单聊 效果图: 群聊: 单聊: 服务端: package main import ( "fmt" ...
- C# 设计模式巩固 - 抽象工厂模式
前言 继续工厂模式高级版,抽象工厂模式.抽象工厂模式其实是从工厂方法模式拓展而来.在实际的生活中一个工厂的产品不可能是单一的,肯定是多种系列的产品. 介绍 - 抽象工厂模式 定义:(摘自百度百科~ ...
- MySQL简单的操作,增删改查
B/S架构模式与C/S架构模式的区别 B/S=WEB/SERVER C/S=CLIENT/SERVIR B/S:用户通过web浏览器打开域名就能访问服务器server的方式就叫做B/S用户不需要安装任 ...
- New Concept English there (5)
25w/m Editors of newspapers and magazines often go to extremes to provide their readers with unimpor ...
- ajaxFileUpload的data数据带pre标签
解决办法: var ret = jQuery.parseJSON(jQuery(data).text());
- Cannot forward after response has been committed 错误
出现该错误的原因是:页面的跳转控制不好,换句话就是说程序的逻辑控制不好,导致了程序顺序执行的时候多次跳转到同一页面,有的程序员建议用多次使用return语句来返回,但是个人认为最好的还是自己要先理清页 ...
- sql密码修改
首先,以window 认证登陆. 2 然后,在 安全性---->登录名---->sa.右击 选择属性.直接修改 星号密码即可. 3 然后 在右上角 文件--->链接对象资源管理器-- ...
- flowable DmnEngine和DmnEngineConfiguration
一.DmnEngineConfiguration创建实例 DmnEngineConfiguration 提供了7个公共的静态方法,用于创建自身实例. 其中5个是使用spring的机制加载配置文件. 另 ...