(转)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 包,否则会有冲突

否则会报错:

Java代码  

  1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
  2. at javax.mail.Session.loadProvidersFromStream(Session.java:928)
  3. at javax.mail.Session.access$000(Session.java:174)
  4. at javax.mail.Session$1.load(Session.java:870)
  5. at javax.mail.Session.loadResource(Session.java:1084)
  6. at javax.mail.Session.loadProviders(Session.java:889)
  7. at javax.mail.Session.<init>(Session.java:210)
  8. at javax.mail.Session.getInstance(Session.java:249)
  9. at com.mail.TextMail.main(TextMail.java:22)

下面我直接贴代码了

Java代码  

  1. package com.mail;
  2. import java.util.Date;
  3. import java.util.Properties;
  4. import javax.mail.Message;
  5. import javax.mail.Session;
  6. import javax.mail.Transport;
  7. import javax.mail.internet.InternetAddress;
  8. import javax.mail.internet.MimeMessage;
  9. import javax.mail.internet.MimeUtility;
  10. // 如果你使用JDK1.4以上运行 会出现 Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
  11. // 需要你找到 javaee.jar 删掉 里面的 mail 包
  12. public class TextMail {
  13. public static void main(String[] args) throws Exception {
  14. // 配置文件对象
  15. Properties props = new Properties();
  16. // 邮箱服务地址
  17. props.put( "mail.smtp.host ", "smtp.163.com ");
  18. // 是否进行验证
  19. props.put("mail.smtp.auth", "true");
  20. // 创建一个会话
  21. Session session = Session.getInstance(props);
  22. // 打开调试,会打印与邮箱服务器回话的内容
  23. session.setDebug(true);
  24. Message message = new MimeMessage(session);
  25. // 如果发送人没有写对,那么会出现 javamail 550 Invalid User
  26. // 如果发送人写的和使用的帐号不一致,则会出现 553 Mail from must equal authorized user
  27. InternetAddress from = new InternetAddress("[email protected]");
  28. from.setPersonal(MimeUtility.encodeText("java小强<[email protected]>"));
  29. message.setFrom(from);
  30. InternetAddress to = new InternetAddress("[email protected]");
  31. message.setRecipient(Message.RecipientType.TO, to);
  32. message.setSubject(MimeUtility.encodeText("强哥邀请,谁敢不从!"));
  33. message.setText("强哥邀请你访问我的博客:http://cuisuqiang.iteye.com/!");
  34. message.setSentDate(new Date());
  35. Transport transport = session.getTransport("smtp");
  36. // 具体你使用邮箱的smtp地址和端口,应该到邮箱里面查看,如果使用了SSL,网易的端口应该是 465/994
  37. transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");
  38. transport.sendMessage(message, message.getAllRecipients());
  39. transport.close();
  40. System.out.println("发送完毕");
  41. }
  42. }

需要注意的有

Java代码  

  1. InternetAddress from = new InternetAddress("[email protected]");

Java代码  

  1. transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");

这两个邮箱的地址必须相同,否则会出现

Java代码  

  1. Exception in thread "main" javax.mail.MessagingException: 553 Mail from must equal authorized user
  2. at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)
  3. at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)
  4. at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)
  5. at com.mail.TextMail.main(TextMail.java:38)

你上网查都是说用户验证不对,其实一般大家都是按照别人代码拷贝的,然后修改了用户和密码,怎么会不对!

我这个账户和密码都是可以用的,对不起网易了!

由于上面我设置了打印调试,所以你在控制台会看到如下内容:

Java代码  

  1. DEBUG: setDebug: JavaMail version 1.3.1
  2. DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
  3. DEBUG SMTP: useEhlo true, useAuth true
  4. DEBUG SMTP: trying to connect to host "smtp.163.com", port 25
  5. 220 163.com Anti-spam GT for Coremail System (163com[20111010])
  6. DEBUG SMTP: connected to host "smtp.163.com", port: 25
  7. EHLO cuisuqiang
  8. 250-mail
  9. 250-PIPELINING
  10. 250-AUTH LOGIN PLAIN
  11. 250-AUTH=LOGIN PLAIN
  12. 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrgdNesUCa0xDrUUUUj
  13. 250-STARTTLS
  14. 250 8BITMIME
  15. DEBUG SMTP: Found extension "PIPELINING", arg ""
  16. DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
  17. DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
  18. DEBUG SMTP: Found extension "coremail", arg "1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrgdNesUCa0xDrUUUUj"
  19. DEBUG SMTP: Found extension "STARTTLS", arg ""
  20. DEBUG SMTP: Found extension "8BITMIME", arg ""
  21. DEBUG SMTP: Attempt to authenticate
  22. AUTH LOGIN
  23. 334 dXNlcm5hbWU6
  24. dGVzdDIwMTIwNzExMTIwMjAw
  25. 334 UGFzc3dvcmQ6
  26. dGVzdDEyMzQ1Ng==
  27. 235 Authentication successful
  28. DEBUG SMTP: use8bit false
  29. MAIL FROM:<test20120711120200@163.com>
  30. 250 Mail OK
  31. RCPT TO:<455213313@qq.com>
  32. 250 Mail OK
  33. DEBUG SMTP: Verified Addresses
  34. DEBUG SMTP:   455213313@qq.com
  35. DATA
  36. 354 End data with <CR><LF>.<CR><LF>
  37. Message-ID: <14518194.1341995865564.JavaMail.Administrator@cuisuqiang>
  38. Date: Wed, 11 Jul 2012 16:37:45 +0800 (CST)
  39. From: "=?GBK?Q?java=D0=A1=C7=BF<[email protected]>?=" <test20120711120200@163.com>
  40. To: 455213313@qq.com
  41. Subject: =?GBK?B?x7+459H7x+ujrMutuNKyu7TTo6E=?=
  42. Mime-Version: 1.0
  43. Content-Type: text/plain; charset=GBK
  44. Content-Transfer-Encoding: quoted-printable
  45. =C7=BF=B8=E7=D1=FB=C7=EB=C4=E3=B7=C3=CE=CA=CE=D2=B5=C4=B2=A9=BF=CD=A3=BAhtt=
  46. p://cuisuqiang.iteye.com/=A3=A1
  47. .
  48. 250 Mail OK queued as smtp2,DNGowEB52UhcO_1PZmMMCA--.937S2 1341995868
  49. QUIT

这些都是程序与邮件服务商的一些交互信息!

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

时间: 2024-08-10 17:17:33

(转)JavaMail邮件发送-发送一个文本邮件和一些问题说明的相关文章

使用SMTP协议发送发送简单的文本邮件

package com.smartteam.common.email; import java.util.Date;import java.util.Properties; import javax.mail.Message.RecipientType;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet

spring boot发简单文本邮件

首先要去邮箱打开POP3/SMTP权限: 然后会提供个授权码,用来发送邮件.忘记了,可以点生成授权码再次生成. 1.引入spring boot自带的mail依赖,这里版本用的:<spring-boot.version>1.4.3.RELEASE</spring-boot.version> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin

【demo】自己写的一个 SpringMail 异步发送邮件的demo。 javamail 邮件异步发送

原文:[demo]自己写的一个 SpringMail 异步发送邮件的demo. javamail 邮件异步发送 源代码下载地址:http://www.zuidaima.com/share/1550463483120640.htm [demo]自己写的一个 SpringMail 异步发送邮件的demo. javamail 邮件异步发送 (注意 配置里面的账号跟发件人账号要一致) 1. 请各位在跑单元测试的时候,在 spring-mail.xml 文件中配置自己的邮箱账号和密码 (我已经注释掉了)

【Mail】JavaMail发送带附件的邮件

上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入javamail.jar包,maven引用如下: 1 <!-- javamail --> 2 <dependency> 3 <groupId>javax.mail</groupId> 4 <artifactId>mail</artifactId

(转)用javamail发送带附件的邮件

本文转载自:http://redleaf.iteye.com/blog/78217 mail.java 代码 package mail; import java.util.* ; import java.io.* ; import javax.mail.* ; import javax.mail.internet.* ; import javax.activation.* ; public class Mail { //定义发件人.收件人.SMTP服务器.用户名.密码.主题.内容等 privat

python实现发送文本邮件

简单实现了python发送文本邮件 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 # @Time : 2018/4/25 17:09 5 # @Author : zms 6 # @Site : 7 # @File : SendEmail.py 8 # @Software: PyCharm Community Edition 9 10 import time 11 from email.mime.text import MIMEText

JavaWeb学习总结(五十一)——邮件的发送与接收原理

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

Android上发送带附件的邮件

准备工作-下载最新版本的JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html 在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有点是比较方便 不需要写很多代码,但是不是很灵活. 第二种

深入分析JavaWeb Item41 -- 邮件的发送与接收原理

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